코딩테스트/[JAVA] 백준

[백준 | 2745번] 진법 변환

냠냠쿠 2023. 8. 10. 22:36
728x90
https://www.acmicpc.net/problem/2745

📝 나의풀이

import java.util.Scanner;

public class test {

	public static void main(String[] args) {

		Scanner scanner = new Scanner(System.in);
		
		String N = scanner.next(); //수N
		int B = scanner.nextInt(); //수B

		long result = 0; //결과값을 담을 변수. int의 범위를 초과할 수 있으니 long으로 담아준다. 
		
		for(int i = 0; i<N.length() ; i++ ) {
			//result에 다시 b를 곱해서 계속해서 거듭제곱
			if( '0'<= N.charAt(i) && N.charAt(i) <='9') { //한자리를 뽑아내서 비교.
				result = result * B + ((int)N.charAt(i)-(int)'0');
			} else {
				result = result * B  + ((int)N.charAt(i)-(int)'A'+10);
			}
		}
		System.out.println(result);
	}
}
  • 10진수로 바꾸는 법은 몇 진수이든 방법이 같다
    각 자리의 10진수 숫자 진수의 각 자리수 제곱 모두 더하기
    예를들어 2진수 1101일때에는 12^3 + 12^2 + 02^1 + 1*2^0 = 13
  • for문으로 result에 다시 b를 곱해 계속해서 거듭 제곱 하는 방식으로 10진수를 변환하여 result를 출력 한다.
728x90