Coding Test/Algorithm #Python3

[프로그래머스] K번째수 #정렬 #알고리즘

harrym8n 2025. 3. 21. 13:12

문제 바로가기 👉 프로그래머스


☑️  문제 요약

주어진 배열 array에서 특정 구간 [i, j]을 잘라 정렬한 후, k번째 숫자를 구한다.

제한사항

• array의 길이는 1~100
• commands의 길이는 1~50
• array의 원소 값과 i, j, k 값은 1~100

 

☑️  KEY 포인트

  1. 문제 풀이 과정을 먼저 생각한다.
    • array의 i번째부터 j번째까지 슬라이싱
    • 자른 배열을 정렬
    • 정렬된 배열에서 k번째 숫자를 찾음
    • 위 과정을 commands에 있는 모든 [i, j, k]에 대해 수행하여 결과 배열을 반환
  2. 위 과정을 코드로 구현한다.
    • 리스트 슬라이싱 활용(array[i-1:j]) - 리스트 인덱스는 0부터 시작하므로 i에서 1을 빼준다.
    • 반복문을 통해서 commands 안에 있는 리스트들(개별 command)로 모두 진행
  3. 실패했던 코드
    • 원인 : sort()를 통해 리스트를 정렬하고 변수로 다시 지정했다.
    • Pandas의 데이터프레임과 다르게 리스트는 정렬 후 변수로 다시 지정해줄 필요가 없다!
def solution(array, commands):
    answer = []
    for cmd in commands:
        tmp = array[(cmd[0]-1):cmd[1]]
        tmp = tmp.sort() # 오류 발생한 부분
        tmp = tmp[cmd[2]-1]
        answer.append(tmp)
    return answer

 

☑️  해결 코드

def solution(array, commands):
    answer = []
    for cmd in commands:
        tmp = array[(cmd[0]-1):cmd[1]]
        tmp.sort()
        tmp = tmp[cmd[2]-1]
        answer.append(tmp)
    return answer