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.
}
}
'ALGORITHM > 프로그래머스 | 백준 | 삼성 | 카카오' 카테고리의 다른 글
[프로그래머스] 구명보트 (0) | 2021.05.05 |
---|---|
[백준] 1795번 암호 만들기 java (0) | 2021.05.04 |
[프로그래머스] 2019 카카오 개발자 겨울 인턴십 징검다리 건너기 java (0) | 2021.04.06 |
[프로그래머스] 스타 수열 java (0) | 2021.04.05 |
[프로그래머스] 짝지어 제거하기 java (0) | 2021.04.01 |