[프로그래머스] 정렬, K번째 수

programmers

머리에 기름칠 좀 할 겸,
매일 한 시간씩 프로그래머스에서 제공하는 코딩 테스트 연습문제를 풀고 있다.
주소: https://programmers.co.kr/learn/courses/30/parts/12198


오늘 푼 문제는 정렬문제
0 1 2

내 풀이

def solution(array, commands):
    answer = []
    for c in commands:
        target = array[c[0]-1:c[1]]
        sorted_array = sorted(target)
        answer.append(sorted_array[c[2]-1])

    return answer

풀이를 할 때 2차원 리스트를 foreach로 돌리면 어떻게 나오는지 까먹었었다.

가장 추천수가 높은 풀이

def solution(array, commands):
    return list(map(lambda x:sorted(array[x[0]-1:x[1]])[x[2]-1], commands))

map과 람다식에 익숙해져야겠다. 그다지 맘에 드는 코드는 아니지만.
나머지 풀이는 내 풀이와 비슷했다.

가장 좋았던 풀이

def solution(array, commands):
    answer = []
    for command in commands:
        i,j,k = command  # 이 부분
        answer.append(list(sorted(array[i-1:j]))[k-1])
    return answer

변수에 리스트 값들을 한 번에 집어넣는다는 발상이 스무스하지가 않다.
익숙해지자. zip()도

프로그래머스에서 본 문제 중에 가장 쉬웠다.