본문 바로가기
알고리즘 풀이

[백준] 2745번: 진법 변환 - java 풀이

by 코디드 2023. 6. 28.

 

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

public class Main {

	public static void main(String[] args) throws IOException{
		
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		StringTokenizer st = new StringTokenizer(br.readLine());
		
		String N = st.nextToken();
		int B = Integer.parseInt(st.nextToken());
		
		int result=0;
		int sum=0;
		
		for(int i=0; i<N.length(); i++) {
			char c = N.charAt(i);
			
			if('0'<=c && c<='9') {
				result=c-48;
			}else if('A'<=c && c<='Z'){
				result=c-55;
			}
			
			sum+= result * Math.pow(B, N.length()-1-i);
		}
		System.out.println(sum);
	}
}

 

풀이 방법을 생각할때는 쉽게 생각했는데 구현하는데 있어서 막히는 부분이 있어서 해결하지 못했다.

 

문제 해결에 필요한 요소 

1. N은 각 자리의 숫자가 0~9 또는 10~35에 해당하는 문자 A~Z를 입력 받기 때문에 문자로 입력 받아야 한다.

2. 입력 받은 각 자리수가 숫자일 경우와 문자일 경우로 나눠 조건문을 작성해야 한다.

3. 10진법으로 변환할때는 제곱을 구해야 하므로 Math.pow(밑, 지수)를 사용해야 한다.

4. 각각의 자리는 N.length()-1-i 로 구해야 한다.

 

이 모든 걸 생각해냈는데도 문제를 풀지 못했다. 막상 저런 요소는 생각해내고 반복문 안의 내용을 구현하지 못했다.

어찌되었든 간에 다 비겁한 변명이고 결과적으로 풀지 못한 것이다.

더 익숙해지도록 노력해야겠다.