Algorithm/프로그래머스
[Lv.0/Python] 수열과 구간 쿼리 2
chocoji
2023. 6. 24. 21:10
문제
https://school.programmers.co.kr/learn/courses/30/lessons/181923
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명
정수 배열 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
에 넣어준다.