๐Ÿ“ ์•Œ๊ณ ๋ฆฌ์ฆ˜/Implementation

[๋ฐฑ์ค€] 18222๋ฒˆ ํˆฌ์—-๋ชจ์Šค ๋ฌธ์ž์—ด ( Java )

์ ์ด 2022. 2. 16. 00:56
๋ฐ˜์‘ํ˜•

๋ฌธ์ œ (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;
    }

}
๋ฐ˜์‘ํ˜•