Algorithm๐Ÿฅ‡

2089.-2์ง„์ˆ˜

hae02y 2023. 10. 20. 23:35
๋ฐ˜์‘ํ˜•

๋ฌธ์ œ

-2์ง„๋ฒ•์€ ๋ถ€ํ˜ธ ์—†๋Š” 2์ง„์ˆ˜๋กœ ํ‘œํ˜„์ด ๋œ๋‹ค. 2์ง„๋ฒ•์—์„œ๋Š” 20, 21, 22, 23์ด ํ‘œํ˜„ ๋˜์ง€๋งŒ -2์ง„๋ฒ•์—์„œ๋Š” (-2)0 = 1, (-2)1 = -2, (-2)2 = 4, (-2)3 = -8์„ ํ‘œํ˜„ํ•œ๋‹ค. 10์ง„์ˆ˜๋กœ 1๋ถ€ํ„ฐ ํ‘œํ˜„ํ•˜์ž๋ฉด 1, 110, 111, 100, 101, 11010, 11011, 11000, 11001 ๋“ฑ์ด๋‹ค.

10์ง„๋ฒ•์˜ ์ˆ˜๋ฅผ ์ž…๋ ฅ ๋ฐ›์•„์„œ -2์ง„์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

## ์ž…๋ ฅ

์ฒซ ์ค„์— 10์ง„๋ฒ•์œผ๋กœ ํ‘œํ˜„๋œ ์ˆ˜ N์ด ์ฃผ์–ด์ง„๋‹ค.

## ์ถœ๋ ฅ

-2์ง„๋ฒ• ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

๋‚˜๋จธ์ง€๊ฐ€ 0๋˜๋Š” 1์ด๋‚˜์˜ค๊ฒŒ ํ•˜๋Š”๊ฒƒ์ด ํ•ต์‹ฌ์ธ ๋ฌธ์ œ์ด๋‹ค.

์˜ˆ๋กœ -13์„ -2์ง„์ˆ˜๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒฝ์šฐ๋ฅผ ์‚ดํŽด๋ณด๋ฉด:

  • -13 / -2 = 6, ๋‚˜๋จธ์ง€ -1 (10์ง„์ˆ˜๋กœ -1, -2์ง„์ˆ˜๋กœ 1)
  • 6 / -2 = 3, ๋‚˜๋จธ์ง€ 0 (10์ง„์ˆ˜๋กœ 0, -2์ง„์ˆ˜๋กœ 0)
  • 3 / -2 = 1, ๋‚˜๋จธ์ง€ -1 (10์ง„์ˆ˜๋กœ -1, -2์ง„์ˆ˜๋กœ 1)
  • 1 / -2 = 0, ๋‚˜๋จธ์ง€ 1 (10์ง„์ˆ˜๋กœ 1, -2์ง„์ˆ˜๋กœ 1)
์‹œ๊ฐ„ ์ œํ•œ ๋ฉ”๋ชจ๋ฆฌ ์ œํ•œ ์ œ์ถœ ์ •๋‹ต ๋งžํžŒ ์‚ฌ๋žŒ ์ •๋‹ต ๋น„์œจ
2 ์ดˆ 128 MB 10786 5034 4140 45.700%

https://www.acmicpc.net/problem/2089

ํ’€์ด

์–ด๋Š์ •๋„ ๋ฌธ์ œ๋Š” ์•Œ๊ฒ ๋Š”๋ฐ... ๊ตฌํ˜„์ด ์•ˆ๋˜์„œ ์ธํ„ฐ๋„ท์„ ์ฐพ์•„๋ณด์•˜๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ดํ•ดํ•œ๊ฒƒ์„ ๋ฐ”ํƒ•์œผ๋กœ ์ •๋ฆฌํ•ด ๋ณด์•˜๋‹ค.

์ฝ”๋“œ


import java.io.BufferedReader;  
import java.io.IOException;  
import java.io.InputStreamReader;  

public class ๋งˆ์ด๋„ˆ์Šค2์ง„์ˆ˜ {  
    public static void main(String[] args) throws IOException {  
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));  
        StringBuilder sb =new StringBuilder();  

        int n = Integer.parseInt(br.readLine());  

        if(n == 0){  
            System.out.println(0);  
        }else {  
            while (n != 0){  
                int remainder = n % -2;  
                n /= -2;  

                if(remainder < 0){ //๋‚˜๋จธ์ง€๊ฐ€ 0๋ณด๋‹ค ์ž‘์œผ๋ฉด  
                    remainder += 2; //๋‚˜๋จธ์ง€ + 2                    n++; //๋ชซ + 1                }  

                sb.insert(0,remainder);  
            }  

            System.out.println(sb);  
        }  

    }  
}

stack์„ ์‚ฌ์šฉํ•ด์„œ ํ‘ธ๋Š”๊ฒƒ๋„ ๊ฐ€๋Šฅํ• ๊ฒƒ๊ฐ™๊ณ ...์—ฌ๊ธฐ์„œ๋Š” StringBuilder.insert()๋ฅผ ์ด์šฉํ•˜์˜€๋‹ค. while๋ฌธ์„ ๋Œ๋ฉด์„œ sb.insert(0,remainder); 0๋ฒˆ index์— remainder๋ฅผ ๋„ฃ์–ด์ฃผ๋Š” ๋ฐฉ์‹์ด๋‹ค.

๋ฐ˜์‘ํ˜•