[๋ฐฑ์ค] 18222๋ฒ ํฌ์-๋ชจ์ค ๋ฌธ์์ด ( Java )
๋ฌธ์ (Silver 2)
https://www.acmicpc.net/problem/18222
18222๋ฒ: ํฌ์-๋ชจ์ค ๋ฌธ์์ด
0๊ณผ 1๋ก ์ด๋ฃจ์ด์ง ๊ธธ์ด๊ฐ ๋ฌดํํ ๋ฌธ์์ด X๊ฐ ์๋ค. ์ด ๋ฌธ์์ด์ ๋ค์๊ณผ ๊ฐ์ ๊ณผ์ ์ผ๋ก ๋ง๋ค์ด์ง๋ค. X๋ ๋งจ ์ฒ์์ "0"์ผ๋ก ์์ํ๋ค. X์์ 0์ 1๋ก, 1์ 0์ผ๋ก ๋ค๋ฐ๊พผ ๋ฌธ์์ด X'์ ๋ง๋ ๋ค. X์ ๋ค์
www.acmicpc.net
ํ์ด
์ ๊ทผ
์ค๋ช
1๊ณผ 0์ 1๊ณผ -1์ด๋ผ๊ณ ์๊ฐํ์! ( ๋ถํธ์ ์ฐจ์ด๋ก ์๊ฐํ์! )
2์ ์ ๊ณฑ ์(2,4,8,16,...)๋งํผ ์๋ค๋ก ๋์นญ๋๊ณ ์๋ ๋ฌธ์์ด!
์ฆ, N๋ณด๋ค ์์ 2์ ์ ๊ณฑ์๋ฅผ ๋บ ์ธ๋ฑ์ค ๊ฐ(N - (2*?)) ์ ์๋ฉด N์ ๊ฐ์ ์๊ฒ ๋จ
์์ ์์๋ก ์ค๋ช ํ์๋ฉด, 27๋ฒ์งธ ๊ฐ์ 11๋ฒ์งธ ๊ฐ๊ณผ ๊ฐ์(๋ถํธ๋ง ๋ฐ๋)
11๋ฒ์งธ ๊ฐ์ 3๋ฒ์งธ ๊ฐ๊ณผ ๊ฐ์ ... ์ด ๋ฐ๋ณต๋จ => ์ฌ๊ท!
์ฆ, N๋ณด๋ค ์์ 2์ ์ ๊ณฑ์๋ฅผ ๋บ ์ธ๋ฑ์ค ๊ฐ์ ์ฐพ์ผ๋ฉฐ ์ฌ๊ท๋ฅผ ํ๊ณ 1์ด ๋์ ๋์ 0์ ๋ฆฌํดํด์ค๋ค.
์ด๋ ํ๋ฒ ์ฌ๊ท๋ฅผ ๋๋๋ง๋ค 0์ 1๋ก, 1์ 0์ผ๋ก ๋ณํํด์ผํ๊ธฐ ๋๋ฌธ์, 1์์ ๋ฆฌํด๋ฐ์ ๊ฐ์ ๋นผ์ฃผ์ด ๊ฐ๋จํ๊ฒ ๊ตฌํด์ค๋ค!
์ฝ๋
import java.util.*;
import java.io.*;
public class Main{
static int res = 0;
static long[] pow; // 2์ ์ ๊ณฑ์๋ค์ ์ ์ฅํด ๋๋ ๋ฐฐ์ด
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
long n = Long.parseLong(br.readLine());
pow = new long[64];
pow[0] = 1;
for(int i = 1 ; i < 64 ; i++){
pow[i] = pow[i-1]*2;
}
System.out.println(toemos(n));
}
private static int toemos(long n) {
if(n == 1){
return 0;
}
for(int i =0 ; i < 64 ; i++){
if(pow[i] >= n) return 1 - toemos(n - pow[i-1]);
}
return 0;
}
}