Algorithm๐Ÿฅ‡

1373.2์ง„์ˆ˜8์ง„์ˆ˜

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

๋ฌธ์ œ

2์ง„์ˆ˜๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, 8์ง„์ˆ˜๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— 2์ง„์ˆ˜๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ์ฃผ์–ด์ง€๋Š” ์ˆ˜์˜ ๊ธธ์ด๋Š” 1,000,000์„ ๋„˜์ง€ ์•Š๋Š”๋‹ค.

์ถœ๋ ฅ

์ฒซ์งธ ์ค„์— ์ฃผ์–ด์ง„ ์ˆ˜๋ฅผ 8์ง„์ˆ˜๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ์ถœ๋ ฅํ•œ๋‹ค.

์‹œ๊ฐ„ ์ œํ•œ ๋ฉ”๋ชจ๋ฆฌ ์ œํ•œ ์ œ์ถœ ์ •๋‹ต ๋งžํžŒ ์‚ฌ๋žŒ ์ •๋‹ต ๋น„์œจ
1 ์ดˆ 128 MB 31251 12330 10156 41.016%

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

ํ’€์ด

์ฝ”๋“œ

1๋ฒˆ์งธ ์‹œ๋„

import java.io.BufferedReader;  
import java.io.IOException;  
import java.io.InputStreamReader;  
import java.util.LinkedList;  
import java.util.Queue;  

public class Main {  

    public static void main(String[] args) throws IOException {  
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));  
        Queue<Character> queue = new LinkedList<>();  
        StringBuilder sb = new StringBuilder();  

        String string = br.readLine();  
        int result = 0;  

        if(string.equals("0")) System.out.println(0);  

        for (int i = string.length() - 1; i >= 0; i--) {  
            queue.add(string.charAt(i));  

            if (queue.size() == 3) {  
                String index = "";  
                while (!queue.isEmpty()) {  
                    index += queue.poll();  
                }  
                for (int j = index.length() - 1; j >= 0; j--) {  
                    if (index.charAt(j) != '0') {  
                        result += (int) Math.pow(2, j);  
                    }  
                }  
                if(result != 0){  
                    sb.append(result);  
                    result = 0;  
                }  
            }  
        }  
            String index = "";  
            while (!queue.isEmpty()) {  
                index += queue.poll();  
            }  
            for (int j = index.length() - 1; j >= 0; j--) {  
                if (index.charAt(j) != '0') {  
                    result += (int) Math.pow(2, j);  
                }  
            }  

            if(result != 0) {  
                sb.append(result);  
            }  
            sb.reverse();  

        System.out.println(sb);  
        br.close();  
    }  
}

sb๋กœ ์ถœ๋ ฅ์„ ํ•˜๋‹ˆ ์•ž์— 0 ์ด ์ถœ๋ ฅ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์–ด, BigInteger๋กœ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด๋ดค๋‹ค. ๊ทธ๋ ‡๊ฒŒ ์ž‘์„ฑํ•˜๋‹ˆ ๋ฉ”๋ชจ๋ฆฌ์ดˆ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ, ๊ฒฐ๊ณผ๊ฐ’์ด 0์ด ์•„๋‹๋•Œ๋งŒ sb.append()๋ฅผ ํ•˜๊ฒŒ ์ž‘์„ฑํ•˜์˜€๋‹ค. ์ง์ ‘ ํ…Œ์ŠคํŠธํ• ๋•Œ๋Š” ์ •์ƒ์ ์œผ๋กœ ๋˜๋Š”๋ฐ, ๋ฐฑ์ค€์—์„œ ๋Œ๋ฆฌ๋ฉด ์‹คํŒจ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค...

๋‘๋ฒˆ์งธ ์‹œ๋„

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

public class _2์ง„์ˆ˜8์ง„์ˆ˜ {  

    public static void main(String[] args) throws IOException {  
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));  
        StringBuilder sb = new StringBuilder();  

        String number = br.readLine();  
        // ์ž…๋ ฅ๋œ 2์ง„์ˆ˜ ๋ฌธ์ž์—ด์˜ ๊ธธ์ด ๊ตฌํ•˜๊ธฐ  
        int length = number.length();  
        // ์ž…๋ ฅ๋œ 2์ง„์ˆ˜ ๋ฌธ์ž์—ด์„ 3์ž๋ฆฌ์”ฉ ๋Š์–ด 8์ง„์ˆ˜๋กœ ๋ณ€ํ™˜ํ•˜๊ธฐ  
        int remainder = length%3;// ๋‚˜๋จธ์ง€ ๋ถ€๋ถ„์˜ ๊ธธ์ด๋ฅผ ๊ณ„์‚ฐ  

        // ๋‚˜๋จธ์ง€ ๋ถ€๋ถ„์ด 1 ๋˜๋Š” 2์ž๋ฆฌ์ธ ๊ฒฝ์šฐ ๋ณ€ํ™˜  
        if(remainder > 0){  
            sb.append(Integer.parseInt(number.substring(0,remainder),2));  
        }  

        while (remainder < length){  
            // 2์ง„์ˆ˜๋ฅผ 10์ง„์ˆ˜๋กœ ๋ณ€ํ™˜ํ•จ(3์ž๋ฆฌ์”ฉ ๋Š์—ˆ๊ธฐ๋•Œ๋ฌธ์— ์ตœ๋Œ€ 7์ž„)  
            sb.append(Integer.parseInt(number.substring(remainder,remainder+3),2));  
            remainder +=3;  
        }  

        System.out.println(sb);  
        br.close();  
    }  
}

gpt์˜ ๋„์›€์„ ๋ฐ›์•˜๋‹ค. ์–ด๋ ต๋‹ค ์ง„์งœ...ใ… ใ… 

๋ฐ˜์‘ํ˜•