ALGORITHM/프로그래머스 | 백준 | 삼성 | 카카오

[백준] 18222번 투에-모스 문자열 java

SZCODE 2021. 4. 16. 01:15

www.acmicpc.net/problem/18222

 

18222번: 투에-모스 문자열

0과 1로 이루어진 길이가 무한한 문자열 X가 있다. 이 문자열은 다음과 같은 과정으로 만들어진다. X는 맨 처음에 "0"으로 시작한다.  X에서 0을 1로, 1을 0으로 뒤바꾼 문자열 X'을 만든다. X의 뒤에

www.acmicpc.net

import java.util.*;

public class Main {
    static long[] arr = new long[64];
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        long k = sc.nextLong();

        //1. 처음 2^n개의 원소가 한번 결정되어 문자열 s를 형성하면,
        for (int i = 0; i < arr.length; i++) {
			arr[i] = (long)Math.pow(2, i); 
		}
       
        System.out.println(solv(k));
    }

    public static int solv(long k) {
        if (k == 1)  return 0;//2. 다음 2^n개의 원소는 s의 비트 단위 NOT으로 형성된다. t2n= tn
        
        long N = 0;
        
        for (int i = 0; i < arr.length; i++) {
            if (k > arr[i]) N = arr[i];
            else break;
            
        }
        return 1 - solv(k - N);//3. 이제 처음 2^n+1개의 원소를 정의했으므로 재귀한다. t2n+1= 1 − tn.

    }

}