계단을 오르듯이

[JAVA] 18222. 투에 모스 문자열 본문

알고리즘/백준_JAVA

[JAVA] 18222. 투에 모스 문자열

happyAyun 2022. 2. 1. 16:30

어려웠다. 분명히 규칙이 있는데 그 규칙을 찾기를 성공하지 못하고 검색을 해보았다.

그리고 투에 모스 수열이 있다는 것을 알게 되었다.

 

투에-모스 수열 - 위키백과, 우리 모두의 백과사전

이 그래픽은 투에 모스 수열의 반복적이고 상보적인 생성을 나타낸다. 수학에서, 투에-모스 수열(영어: Thue-Morse sequence), 또는 프로헷-투에-모스 수열(영어: Prouhet-Thue-Morse sequence)은 0에서 시작해

ko.wikipedia.org

 

아래는 투에모스의 점화식이다. 

이 점화식을 따라 코드를 작성하였다.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
package algo;
 
import java.io.BufferedReader;
import java.io.InputStreamReader;
 
public class B_18222_투에모스문자열 {
 
    public static void main(String[] args) throws Exception {
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        long K = Long.parseLong(in.readLine());
        System.out.println(mos(K - 1));
    }
 
    private static int mos(long N) {
        if (N == 0)
            return 0;
        else if (N == 1)
            return 1;
        else if (N % 2 == 0)
            return mos(N / 2);
        else
            return 1 - mos(N / 2);
    }
}
 
cs

'알고리즘 > 백준_JAVA' 카테고리의 다른 글

[JAVA] 9663. N-Queen  (0) 2022.02.02
[JAVA] 1647. 도시 분할 계획  (0) 2022.02.02
[JAVA] 프로그래머스 - 카펫  (0) 2022.01.31
[JAVA] 14916. 거스름돈  (0) 2022.01.28
[JAVA] 21278. 호석이 두 마리 치킨  (0) 2022.01.28