프로그래머스/알고리즘 고득점 Kit

[프로그래머스] [정렬] Lv.1 /K번째수 (파이썬/Python)

junslee 2025. 5. 27. 10:01

1. 문제 설명

2. 코드 

def solution(array, commands):
    answer = []
    for i,j,k in commands:
        sliced = array[i-1:j]
        sliced.sort()
        answer.append(sliced[k-1])
    return answer

3. 풀이 과정

슬라이싱을 하면 되는 간단한 문제이다.

commands에서 i,j,k를 반복문으로 받아서

sliced변수에 array를 슬라이싱한 배열을 넣는다. 이때 i는 1-based index이므로 [i-1:j]로 슬라이싱한다.

sort() 함수로 sliced 배열을 정렬한다.

리스트 초기화 된 answer에 sliced 배열의 k번째 값을 append()로 추가한다.

k또한 1-based index이므로 [k-1]로 값을 탐색한다.

반복문을 빠져나오면 answer를 반환한다.

4. 추천 코드

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

5. 추천 코드의 풀이 과정

  • 자투리 개념: lambda : 이름 없는 함수
    lambda x: 표현식
  • map() : 리스트 하나하나에 함수를 적용
    map(함수,리스트)

한줄 풀이로 map()에 lambda 표현식으로 작성하였다.