1️⃣ 문제
- 배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수
- 배열 array, [i, j, k]를 원소로 가진 2차원 배열 commands가 매개변수로 주어질 때, commands의 모든 원소에 대해 앞서 설명한 연산을 적용했을 때 나온 결과를 배열에 담아 return 하도록 solution 함수를 작성
2️⃣ 풀이 방법
특별한 알고리즘이 필요한 문제가 아니라, 문제 그대로 array를 i번째부터 j번째까지 자르고, 정렬한 후 k번째 원소 answer에 추가해주기만 하면 끝!
3️⃣ 코드
- 내가 풀이한 코드
import Foundation
func solution(_ array:[Int], _ commands:[[Int]]) -> [Int] {
var answer = [Int]()
commands.forEach() {
var subArray = array[$0[0] - 1..<$0[1]].sorted(by: <)
answer.append(subArray[$0[2] - 1])
}
return answer
}
- map()을 이용해 더 간단하게 짤 수도 있음. (다른 사람 풀이 참고)
import Foundation
func solution(_ array:[Int], _ commands:[[Int]]) -> [Int] {
return commands.map {
array[$0[0]-1..<$0[1]].sorted()[$0[2] - 1]
}
}
4️⃣ 이 문제를 풀면서 되새긴 점
Int 배열 특정 범위로 접근하기
-
substring처럼 index랑 range 만들어서 자르는데에 익숙해져서 이렇게 쉬운 방법이 있는 걸 까먹었다..😅
array[0...1] array[1..<5]