문제풀이/Programmers

[프로그래머스][Lv1][Python] k번째 수

서채리 2022. 2. 10. 18:59

[문제]

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

 

코딩테스트 연습 - K번째수

[1, 5, 2, 6, 3, 7, 4] [[2, 5, 3], [4, 4, 1], [1, 7, 3]] [5, 6, 3]

programmers.co.kr

 

[풀이]

인덱스가 중요한 문제이다.

예를 들어 array가 [1, 5, 2, 6, 3, 7, 4], i = 2, j = 5, k = 3이라면
1. array의 2번째부터 5번째까지 자르면 [5, 2, 6, 3]입니다.
2. 1에서 나온 배열을 정렬하면 [2, 3, 5, 6]입니다.
3. 2에서 나온 배열의 3번째 숫자는 5입니다.

 

문제 설명에 나온 예로 일반화를 적용해 보았다.

1. array[1: 5]로 슬라이싱 할 경우[5, 2, 6, 3] 원소가 구해진다. 이는 array[i-1: j]로 변환할 수 있다.

2. 1에서 나온 리스트를 정렬하기 위해서는 sort 함수를 사용하면 된다. sort(array[i-1: j])

3. array[2] 원소를 구하면 2에서 나온 리스트의 3번째 숫자인 5가 구해진다. sort(array[i-1: j])[k-1]

 

[코드]

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