문제
https://school.programmers.co.kr/learn/courses/30/lessons/181923
문제 설명
정수 배열 arr
와 2차원 정수 배열 queries
이 주어집니다. queries
의 원소는 각각 하나의 query
를 나타내며, [s, e, k]
꼴입니다. 각 query
마다 순서대로 s
≤ i
≤ e
인 모든 i
에 대해 k
보다 크면서 가장 작은 arr[i]
를 찾습니다. 각 쿼리의 순서에 맞게 답을 저장한 배열을 반환하는 solution 함수를 완성해 주세요. 단, 특정 쿼리의 답이 존재하지 않으면 -1을 저장합니다.
제한사항
- 1 ≤
arr
의 길이 ≤ 1,000- 0 ≤
arr
의 원소 ≤ 1,000,000
- 0 ≤
- 1 ≤
queries
의 길이 ≤ 1,000- 0 ≤
s
≤e
<arr
의 길이 - 0 ≤ k ≤ 1,000,000
- 0 ≤
입출력 예
arr | queries | result |
[0, 1, 2, 3, 4] | [[0, 4, 2], [0, 3, 2], [0, 2, 2] | [3, 4, -1] |
Code
def solution(arr, queries):
answer = []
for start, end, k in queries:
min_val = 1000001
for idx in range(start, end + 1):
if arr[idx] > k:
min_val = min(min_val, arr[idx])
min_val = min_val if min_val != 1000001 else -1
answer.append(min_val)
return answer
arr[start]
부터arr[end]
까지 루프를 돌면서arr[idx]
의 값이k
보다 크면,arr[idx]
값과min_val
중 더 작은 값으로min_val
를 갱신한다.min_val
값 갱신이 모두 끝난 뒤,min_val
값이 초깃값과 다르면min_val
값을, 아니면-1
을answer
에 넣어준다.
'Algorithm > 프로그래머스' 카테고리의 다른 글
[Lv.0/Python] 수열과 구간 쿼리 4 (0) | 2023.06.24 |
---|---|
[Lv.0/Python] 수열과 구간 쿼리 3 (0) | 2023.06.24 |
[Lv.0/Python] 수열과 구간 쿼리 1 (0) | 2023.06.24 |
[Lv.0/Python] 문자열 겹쳐쓰기 (0) | 2023.06.24 |
[Lv.0/Python] 짝수의 합 (0) | 2023.06.23 |