CodingTest/정렬 알고리즘

프로그래머스 (Level 1) - k번째 수

seongduck 2022. 8. 6. 18:09

1. 문제 설명

  • 배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k 번째에 있는 수를 구하려한다.
  • 예를 들어 array가 [1,5,2,6,3,7,4], i = 2, j = 5, k = 3이라면 
    • 1. array의 2번째부터 5번째까지 자르면 [5,2,6,3]이다.
    • 2. 배열을 정렬하면 [2,3,5,6]이다.
    • 3. 위 배열의 3번째(k)는 5이다.
  • 배열 array, [i,j,k]를 원소로 가진 2차원 배열 commands가 매개변수로 주어질 때 return 구하라

2. 제한사항

  • array의 길이는 1 이상 100 이하
  • array의 각 원소는 1 이상 100 이하
  • commands의 길이는 1 이상 50 이하
  • commands의 각 원소는 길이가 3이다.

3. 입출력 예

array commands return
[1, 5, 2, 6, 3, 7, 4] [[2, 5, 3], [4, 4, 1], [1, 7, 3]] [5, 6, 3]
  1. array를 2번째부터 5번째까지 자른 후 정렬한다. 그럼 [2,3,5,6]이 되는데 여기서 세 번째 숫자는 5이다.
  2. ....
  3. ....

 


4. 풀이 접근

  1. i, j값을 가지고 배열을 자른다.
  2. 오름차순으로 정렬한다.
  3. k값인 수를 구한다.

5. 코드

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

6. 알아둘만한 문법

for i,j,k in commands
  • 요소 여러개 꺼낼 때 for문에 여러 요소를 한 꺼번에 적어서 효율적으로 쓸 수 있다.