본문 바로가기
Algorithm/BaekJoon[Java]

백준 2745

by 씨니 2022. 3. 31.
728x90

▶ 2745번 문제 - 진법변환

- 11005번의 반대되는 문제 ( https://shinny.tistory.com/156 )

- 입력된 두 숫자 N, B

- B진법 형태 숫자 N을 10진법으로 변환하는 문제 (B범위 : 2<= B <=36 )

 

▶ 풀이방법

import java.util.*;
import java.io.*;
public class Main {
	public static void main(String[] args) throws Exception{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		Stack<Character> stack = new Stack<>();
		
		StringTokenizer st = new StringTokenizer(br.readLine());
		String n = st.nextToken();
		int b = Integer.parseInt(st.nextToken());
		
		for(int i = 0; i < n.length(); i++) {//스택에 n순서대로 저장
			stack.push(n.charAt(i));
		}
		
		int num = 0;
		for(int i = 0 ; i < n.length(); i++) {
			int c = stack.pop();
			
			if(c >= 65) c -= 55; //(char)A-Z아스키 코드일때 원래 수로 변환.
			else c -= 48; //0-9의 아스키코드일때 원래 수로 변환
			
			for(int j = 0; j < i; j++) {
				c *= b;
			}
			num += c;
		}
		
		bw.write(String.valueOf(num));
		bw.flush();
		bw.close();
		br.close();
	}
}
728x90

'Algorithm > BaekJoon[Java]' 카테고리의 다른 글

백준 1212  (0) 2022.04.01
백준 1373  (0) 2022.04.01
백준 11005  (0) 2022.03.31
백준 1850  (0) 2022.03.31
백준 9613  (0) 2022.03.30