>  Algorithm >  상세

백준 - 투에-모스 문자열


목록:Algorithm    TAG: swift , algorithm , backjoon , 백준     등록일:2019-12-30    조횟수:

백준 - 투에-모스 문자열

문제

0과 1로 이루어진 길이가 무한한 문자열 X가 있다. 이 문자열은 다음과 같은 과정으로 만들어진다.

  1. X는 맨 처음에 “0”으로 시작한다.
  2. X에서 0을 1로, 1을 0으로 뒤바꾼 문자열 X’을 만든다.
  3. X의 뒤에 X’를 붙인 문자열을 X로 다시 정의한다.
  4. 2~3의 과정을 무한히 반복한다.

즉, X는 처음에 “0”으로 시작하여 “01”이 되고, “0110”이 되고, “01101001”이 되고, ⋯ 의 과정을 거쳐 다음과 같이 나타내어진다.

“011010011001011010010110011010011001011001101001⋯⋯”

자연수 k가 주어졌을 때 Xk번째에는 무슨 문자가 오는지 구하여라.

입력

첫 번째 줄에 자연수 k (1 ≤ k ≤ 1018) 가 주어진다.

출력

첫 번째 줄에 k번째에 오는 문자를 출력하라.

예제 입력 1 복사

1

예제 출력 1 복사

0

예제 입력 2 복사

2

예제 출력 2 복사

1

예제 입력 3 복사

10

예제 출력 3 복사

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()
이 기사는 원본 기사입니다. 소스를 지정하십시오.:Kodaewon's Blog » 백준 - 투에-모스 문자열

이전: 프로그래머스 - 모의고사