https://school.programmers.co.kr/learn/courses/30/lessons/181923
문제
코드 1
def solution(arr, queries):
answer = []
for i in range(len(queries)) :
mid = []
a = queries[i][0]
b = queries[i][1]
c = queries[i][2]
for j in range(a, b + 1) :
if arr[j] > c :
mid.append(arr[j])
try :
answer.append(min(mid))
except:
answer.append(-1)
return answer
코드 2 (남이 푼거.. 예쁘다..나는 바보..)
def solution(arr, queries) :
answer = []
for s,e,k in queries :
mid = []
for i in arr[s:e+1] :
if i > k :
mid.append(i)
answer.append(-1 if not mid else min(mid))
return answer
풀이
※ 헷갈렸던 점
- query[s, e, k] 에 대해서
'각 query마다 순서대로 s ≤ i ≤ e인 모든 i에 대해 k보다 크면서 가장 작은 arr[i]를 찾습니다.'
라고 되어있는데, 입출력 예를 보니, arr[s] ~ arr[i] 값에 대해 k보다 크면서 가장 작은 arr[i]를 찾으라는 말이었다.
예시를 고대로 가져와보면,,
queries[[0,4,2],[...]]에 대해서는 arr[0]~arr[4] -> [0,1,2,4,3] 배열 중 2보다 큰 값을 찾는거니까 3,4이고 그 중 작은 값인 3이 들어가는거였다.
※ try except문은 다른 분이 푼걸 참고했다.
찾아보니 try/except를 사용해도 되고, 애초에 sort를 통해 순서대로 정렬하는 방법도 있는 것 같다.
레벨0이지만 점점 여러 문법들을 사용해야만 하는 문제들이 등장하고 있는 것 같다..
'코딩테스트' 카테고리의 다른 글
[프로그래머스] Python - Lv.0 두 수의 나눗셈 (0) | 2024.04.30 |
---|---|
[프로그래머스] Python - Lv.0 수열과 구간 쿼리 4 (0) | 2024.04.30 |
[프로그래머스] Python - Lv.0 수열과 구간 쿼리 3 (0) | 2024.04.24 |
[프로그래머스] Python - Lv.0 수 조작하기 2 (2) | 2024.04.22 |
[프로그래머스] Python - Lv.0 수 조작하기 1 (0) | 2024.04.22 |