PROGRAMMERS Python Lv1. K번째 수

최대 1 분 소요

이번 문제는 K번째 수이다.

def solution(array, commands):
    answer = []
    for i in range(len(commands)):
        a = int(commands[i][0])-1
        b = int(commands[i][1])
        c = int(commands[i][2])-1
        x = array[a:b]
        sort_x = sorted(x)
        y = sort_x[c]
        answer.append(y)            
    return answer

문제를 푸는 순서를 다음과 같이 정리했다.

1.commands 리스트에서 시작하는 숫자와 끝나는 숫자, 그리고 K번째 수를 뽑는다.

이는 for 문을 통해 지정한다.

  1. 뽑은 a, b ,c를 array에 적용시켜준다.

  2. 결과로 나오는 y를 answer에 append 시켜주면 된다.

이번 문제는 평소보다 비교적 쉬운 문제인 것 같다.

그렇지만 다른 사람의 풀이를 보면서 더 간결한 코드를 공부하는게 필요한 것 같아 가져왔다.

def solution(array, commands):
    return [sorted(array[a-1:b])[c-1] for a,b,c in commands]

단 한 줄로 나의 저 긴 답을 표현했다.

풀이에 따르면 파이썬의 List comprehension을 사용해서 풀면

성능 면에서도 더 좋다고 한다.

commands의 a,b,c를 각각 지정해서 바로 array 적용시켜주면 답이 return된다.

나도 이런 간결한 코드를 짤 수 있을 때까지 열심히 해봐야겠다.

혹시 제 풀이에 오류가 있거나

더 좋은 방법이 있다면 댓글 남겨주시면 감사드립니다.

댓글남기기