감자주먹밥

[프로그래머스] K번째 수 (swift) 본문

알고리즘/프로그래머스

[프로그래머스] K번째 수 (swift)

JustHm 2021. 12. 18. 14:56
728x90

문제

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

코드

func solution(_ array:[Int], _ commands:[[Int]]) -> [Int] {
    var answer: [Int] = []
    
    for index in 0..<commands.count{
        let first = commands[index][0] - 1
        let second = commands[index][1] - 1
        let third = commands[index][2] - 1
    
        var temp: [Int] = Array(array[first...second]) // 그냥 슬라이싱을 하면 ArraySlice<int> 타입으로 들어온다.
        temp.sort()
    
        answer.append(temp[third])
    }
    return answer
}

문제해결

위에 주석으로도 써 놨지만 그냥 슬라이싱을 해서 넣어주니 인덱스로 접근하는게 이상했었다.

자료형을 명시하고 보니까 배열을 슬라이싱 하면 Array로 나오는게 아닌 ArraySlice로 나오더라..

이 부분은 기억해야겠다.

map사용하면 더 짧다.

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

간단하다... 앞으로 맵을 사용해 볼 생각을 해야겠다.

  • sort() / sorted() 의 차이점sorted() : 정렬을 하여 반환한다.
  • sort() : 내부에서 정렬이 된다.
728x90
Comments