728x90
문제
코드
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