๋ฐ์ํ
๋ฌธ์ (Silver 2)
https://www.acmicpc.net/problem/18222
ํ์ด
์ ๊ทผ
์ค๋ช
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;
}
}
๋ฐ์ํ
'๐ ์๊ณ ๋ฆฌ์ฆ > Implementation' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 1253๋ฒ: ์ข๋ค (Java) (0) | 2022.04.13 |
---|---|
[๋ฐฑ์ค] 16639๋ฒ: ๊ดํธ ์ถ๊ฐํ๊ธฐ 3 (0) | 2022.03.29 |
[๋ฐฑ์ค]11660๋ฒ: ๊ตฌ๊ฐ ํฉ ๊ตฌํ๊ธฐ 5 (Java) (0) | 2022.03.16 |
[๋ฐฑ์ค] 9996๋ฒ: ํ๊ตญ์ด ๊ทธ๋ฆฌ์ธ ๋ ์๋ฒ์ ์ ์ํ์ง (Java) (0) | 2022.03.16 |
[๋ฐฑ์ค] 1032๋ฒ ๋ช ๋ นํ๋กฌํํธ (Java) (0) | 2022.02.16 |