Algorithm๐Ÿฅ‡

11005.์ง„๋ฒ•๋ณ€ํ™˜2

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

๋ฌธ์ œ

10์ง„๋ฒ• ์ˆ˜ N์ด ์ฃผ์–ด์ง„๋‹ค. ์ด ์ˆ˜๋ฅผ B์ง„๋ฒ•์œผ๋กœ ๋ฐ”๊ฟ” ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

10์ง„๋ฒ•์„ ๋„˜์–ด๊ฐ€๋Š” ์ง„๋ฒ•์€ ์ˆซ์ž๋กœ ํ‘œ์‹œํ•  ์ˆ˜ ์—†๋Š” ์ž๋ฆฌ๊ฐ€ ์žˆ๋‹ค. ์ด๋Ÿฐ ๊ฒฝ์šฐ์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์•ŒํŒŒ๋ฒณ ๋Œ€๋ฌธ์ž๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

A: 10, B: 11, ..., F: 15, ..., Y: 34, Z: 35

## ์ž…๋ ฅ

์ฒซ์งธ ์ค„์— N๊ณผ B๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. (2 โ‰ค B โ‰ค 36) N์€ 10์–ต๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜์ด๋‹ค.

## ์ถœ๋ ฅ

์ฒซ์งธ ์ค„์— 10์ง„๋ฒ• ์ˆ˜ N์„ B์ง„๋ฒ•์œผ๋กœ ์ถœ๋ ฅํ•œ๋‹ค.

์‹œ๊ฐ„ ์ œํ•œ ๋ฉ”๋ชจ๋ฆฌ ์ œํ•œ ์ œ์ถœ ์ •๋‹ต ๋งžํžŒ ์‚ฌ๋žŒ ์ •๋‹ต ๋น„์œจ
0.5 ์ดˆ (์ถ”๊ฐ€ ์‹œ๊ฐ„ ์—†์Œ) 256 MB 34254 16465 14175 48.195%

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

ํ’€์ด

์—ฌ๊ธฐ์„œ ํ™•์ธํ•ด์•ผ ํ• ๊ฒƒ์€ 2๊ฐ€์ง€์ด๋‹ค.

  1. b์ง„๋ฒ• ์œผ๋กœ ์–ด๋–ป๊ฒŒ ๋‚˜ํƒ€๋‚ผ๊ฒƒ์ธ๊ฐ€.
  2. b์ง„๋ฒ•์œผ๋กœ ๋‚˜์˜จ ํ•ด๋‹น ๊ฒฐ๊ณผ๊ฐ€ ์–ด๋–ป๊ฒŒ ์ถœ๋ ฅ๋  ๊ฒƒ์ธ๊ฐ€.

1๋ฒˆ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ

while (n != 0){  
            stack.add(n%b);  
            n /= b;  
        }  

2๋ฒˆ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ

while (!stack.isEmpty()){  
            if(stack.peek() >= 10){  
                System.out.printf("%c", Integer.parseInt(String.valueOf(stack.pop())) + 55);  
            }else {  
                System.out.print(stack.pop());  
            }  
        }  

์ด๋ ‡๊ฒŒ ์‚ฌ์šฉํ•˜์˜€๋‹ค. A๊ฐ€ 10 ๊ณผ ์น˜ํ™˜๋˜๋ฏ€๋กœ stack์— ๋“ค์–ด์žˆ๋Š”๊ฐ’์— 55๋ฅผ ๋”ํ•ด์ฃผ๋ฉด ํ•ด๋‹น ์˜๋ฌธ์ž๋กœ ์น˜ํ™˜๋œ๋‹ค.

์ฝ”๋“œ

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

public class ์ง„๋ฒ•๋ณ€ํ™˜2 {  

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

        String[] split = br.readLine().split(" ");  

        long n = Long.parseLong(split[0]);  
        long b = Long.parseLong(split[1]);  

        Stack<Long> stack = new Stack<>();  

        while (n != 0){  
            stack.add(n%b);  
            n /= b;  
        }  
        while (!stack.isEmpty()){  
            if(stack.peek() >= 10){  
                System.out.printf("%c", Integer.parseInt(String.valueOf(stack.pop())) + 55);  
            }else {  
                System.out.print(stack.pop());  
            }  
        }  

        br.close();  
    }  
}
๋ฐ˜์‘ํ˜•