본문 바로가기

개발/알고리즘

[프로그래머스] 정렬 - K번째 수

반응형
 

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

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

programmers.co.kr

입력 & 출력

배열 array, [i, j, k]를 원소로 가진 2차원 배열 commands가 매개변수로 주어질 때, 
commands의 모든 원소에 대해 앞서 설명한 연산을 적용했을 때 나온 결과를 배열에 담아 출력하시오.

 

풀이

주어진 배열에서 길이만큼을 잘라 그 안의 수를 정렬해 k번의 수를 출력하는 문제다
Swift에서는 배열의 부분을 부르는 방법을 array[n...m] 을 통해 편리하게 제공한다
자르려는 문자열이 여러개 들어오니, command 개수만큼 반복해주자

우선 반복이 아닌 command가 하나인 경우로 살펴보자
원하는 만큼의 배열은 아래와 같다

array[(command[0]-1)...(command[1]-1)]

이후 이 배열을 정렬하고, k번의 수를 출력해보자
sorted()가 정렬의 의미하고, 뒤에 붙은 [command[2]-1] 은 k번의 수를 말한다

array[(command[0]-1)...(command[1]-1)].sorted()[command[2]-1]

command는 여러 개가 존재하니, 반복문으로 바꾸어주고 출력해주자.

 

Swift 전체 코드

return commands.map({key in array[(key[0]-1)...(key[1]-1)].sorted()[key[2]-1]})

 

반응형