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] |
- array를 2번째부터 5번째까지 자른 후 정렬한다. 그럼 [2,3,5,6]이 되는데 여기서 세 번째 숫자는 5이다.
- ....
- ....
4. 풀이 접근
- i, j값을 가지고 배열을 자른다.
- 오름차순으로 정렬한다.
- 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문에 여러 요소를 한 꺼번에 적어서 효율적으로 쓸 수 있다.
'CodingTest > 정렬 알고리즘' 카테고리의 다른 글
프로그래머스 (Level 2) - H-index (0) | 2022.08.06 |
---|---|
프로그래머스 (Level 2) - 가장 큰 수 (0) | 2022.08.06 |
두 배열의 원소 교체 (0) | 2022.07.08 |
정렬 알고리즘 종류와 특징 비교하기 (0) | 2022.07.08 |
계수 정렬 (0) | 2022.07.08 |