본문 바로가기

Algorithm

Algorithm(Swift) - K번째수

프로그래머스에 있는 정렬에 있는 K번째수 문제 입니다.

 

소스를 먼저 첨부하고 분석 해보도록 하겠습니다.

func solution(_ array:[Int], _ commands:[[Int]]) -> [Int] {

    var resultArray : [Int] = []

    for i in 0..<commands.count {
        var result = Array<Int>()
        for number in commands[i][0]-1..<commands[i][1] {
            result.append(array[number])
            result.sort()
        }
        resultArray.append(result[commands[i][2]-1])
    }
    return resultArray
}

문제 키포인트 입니다.

예를 들어 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입니다.

다음과 같은 예시를 만들기 위해 commands 를 돌리고

commands [0] = i

commands [1] = j 

commands [2] =k

 

같은 형태를 보여주고 있습니다. 해당 commands 값을 for문을 통해 돌립니다 

나온값을 빈 배열값에 추가하고 정렬해줍니다.

정렬후 commands 3번째 값을 새 배열에 추가해줍니다.

 

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