0과 1로 이루어진 길이가 무한한 문자열 X가 있다. 이 문자열은 다음과 같은 과정으로 만들어진다.
즉, X는 처음에 “0”으로 시작하여 “01”이 되고, “0110”이 되고, “01101001”이 되고, ⋯ 의 과정을 거쳐 다음과 같이 나타내어진다.
“011010011001011010010110011010011001011001101001⋯⋯”
자연수 k가 주어졌을 때 X의 k번째에는 무슨 문자가 오는지 구하여라.
첫 번째 줄에 자연수 k (1 ≤ k ≤ 1018) 가 주어진다.
첫 번째 줄에 k번째에 오는 문자를 출력하라.
1
0
2
1
10
0
일단 풀어봤는데… 런타임에러가 나서 정확한 답을 아직은 모르겠다. 런타임에러 이유를 알고싶다…
let X: [[Int]] = [[0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0], [1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1]]
func solution() {
let k = readLine()
if let k = k, let kValue = UInt64(k) {
let index = Int((kValue % 24) / 12)
let valueIndex = Int(kValue % 13)
print("\(X[index][valueIndex - 1])")
}
}
solution()