코딩 테스트 연습/[프로그래머스] Python

[LV.3] 정렬 > K번째수

duswjd_data 2025. 7. 9. 09:40

문제

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

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr


문제 설명

  • 배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구하려 함

  • 배열 array, [i, j, k]를 원소로 가진 2차원 배열 commands가 매개변수로 주어질 때,
    commands의 모든 원소에 대해 앞서 설명한 연산을 적용했을 때 나온 결과를 배열에 담아 반환
  • 제한사항)
    array의 길이는 1 이상 100 이하
    array의 각 원소는 1 이상 100 이하
    commands의 길이는 1 이상 50 이하
    commands의 각 원소는 길이가 3

정답 코드

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

코드 설명

def solution(array, commands):
    result = []                     # 결과를 담을 빈 리스트 생성
    for command in commands:        # commands 리스트에서 명령 하나씩 꺼냄
        i, j, k = command           # i, j, k 값 각각 분해해서 저장
        sliced = array[i-1:j]       # i번째부터 j번째까지 자름 (1-based 인덱스를 0-based로 변환)
        sliced.sort()               # 자른 배열을 오름차순 정렬
        result.append(sliced[k-1])  # 정렬된 배열에서 k번째 값 추가 (1-based → 0-based 인덱스)
    return result                   # 모든 결과를 담은 리스트 반환

한 줄 코드

def solution(array, commands):
    return [sorted(array[i-1:j])[k-1] for i, j, k in commands]