본문 바로가기
코딩테스트

[Python] 수열과 구간 쿼리 2, 3

by 우지uz 2023. 12. 15.

https://school.programmers.co.kr/learn/courses/30/lessons/181924

def solution(arr, queries):
    # arr = [0, 1, 2, 3, 4] 이고 query 에 있는 i, j에 따라 숫자를 바꿔준다. 
    for query in queries:
        i, j = query
        arr[i], arr[j] = arr[j], arr[i]
    return arr

 

수열과 구간 쿼리3은
[[0, 3],[1, 2],[1, 4]] 리스트 안에 리스트 값이 있는 경우
for 문을 이용해서 

i, j = query 로 원소를 받아올 수 있는 언패킹 문법을 새로 알게 되어서 좋았고

이것 이외에는 신기한게 없었습니다!

수열과 구간 쿼리 2는, 쿼리 3문제를 반대로 하는 느낌이 있었습니다. 

쿼리 3문제와 비교했을 때 상대적으로 어려웠어요. 

for query in queries:
        s, e, k = query
for 문 안에 넣어서, 각 변수들을 받아줬구요

s 이상, e 이하인 숫자들을 먼저 저장하고
available_arr = arr[s:e+1]

그 원소 중에서, k 보다 큰 원소들을
list comprehension으로 받아주었습니다.
filtered_arr = [x for x in available_arr if x > k]

 

전체 풀이입니다. 

def solution(arr, queries):
    answer = []
    for query in queries:
        s, e, k = query
        available_arr = arr[s:e+1]
        filtered_arr = [x for x in available_arr if x > k]
        if filtered_arr != []:
            answer.append(min(filtered_arr))
        else:
            answer.append(-1)
    return answer

특별히 어렵다거나 그런건 아니었지만

list comprehension 에 살짝 익숙해지기도 했고

문제를 푸는 순서에 대해 조금 익숙해진거 같아서

기록합니다