[백준]2745.진법 변환/Java

8569 단어 baekjoonbaekjoon

📃진법 변환 링크


👩🏻‍💻풀이

import java.util.Scanner;

public class BaseChange_2745 {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		
		int answer = 0;
		String N = scan.next();
		int B = scan.nextInt();
		
		for(int i = 0; i < N.length(); i++) {
			if(N.charAt(i) >= '0' && N.charAt(i) <= '9') 
				answer += (N.charAt(i)-'0') * Math.pow(B, (N.length()-i-1));
			else 
				answer += (N.charAt(i)-'A' + 10) * Math.pow(B, (N.length()-i-1));
		}
		System.out.println(answer);
	}
}

📎문자 0, A, a의 아스키코드는 외우기

10진문자
480
65A
97a

☑️0 ~ 9 진법인 경우
문자가 N.charAt(i) >= '0' && N.charAt(i) <= '9'인 경우이다.
그렇기 때문에 0의 아스키코드 48을 빼주거나 '0' 문자 그대로 빼주면 된다
(N.charAt(i)-'0' or N.charAt(i)- 48)

☑️10진법을 넘어가는 진법인 경우
A: 10, B: 11, ..., F: 15, ..., Y: 34, Z: 35
이런 경우에는 다음과 같이 알파벳 대문자를 사용하므로 대문자 A의 아스키코드를 빼주거나 'A' 문자 그대로 빼주면 된다!
(N.charAt(i)-'A' + 10 or N.charAt(i)-65 +10) 10부터 A이므로 10을 더해줌


📎Math.pow 함수

  • Math.pow(base, exponent)
  • base 값을 exponent 값으로 거듭제곱한 숫자 값
  • 예시
Math.pow(7, 2);    // 49
Math.pow(7, 3);    // 343
Math.pow(2, 10);   // 1024

좋은 웹페이지 즐겨찾기