1. 문제 설명
1부터 n 까지 숫자가 무작위로 (중복없이) 정렬된다.
각 숫자 앞에 있는 숫자들 중 자신보다 큰 숫자의 개수 로 이루어진 정렬이 주어진다.
이를 Inversion Sequence 라 한다.
예로 4 8 6 2 5 1 3 7 을 들어보자
1 앞에는 4 8 6 2 5 로 -> 5
2 앞에는 4 8 6 -> 3
3 앞에는 4 8 6 5 -> 4
4 앞에는 -> 0
5 앞에는 8 6 -> 2
6 앞에는 8 -> 1
7 앞에는 8 -> 1
8 은 0
따라서 Inversion Seq 는 5 3 4 0 2 1 1 0 이 된다.
2. 나의 풀이
import Foundation
func solution(_ inversion: [Int]) -> [Int] {
var ret: [Int] = []
for i in 0..<inversion.count {
ret.insert(inversion.count - i, at: inversion[inversion.count - i - 1])
}
return ret
}
3. 풀이 설명
개인적으로 swift는 문자열이나 배열의 index 개념이 매우 어렵게 되어있다고 생각한다. 특히 for 문을 돌릴 때 index 를 사용하지 않고 돌릴 수 있다는 장점이 있기 때문에 더 그런듯 하다.
이번 문제의 풀이는 insert를 잘 활용해야한다.
Array.insert[ Int , at: Int] 개념은 여기 에 잘 나와있다.
핵심은 뒤에서부터 앞으로 차근차근 삽입을 해가면서 쌓아가야 한다는 것..!