본문 바로가기
Baekjoon 자바 코드/일반 수학

[백준] 2745번 진법 변환 풀이 코드 (Java 자바)

by 망댕이 2024. 12. 5.
반응형

주어진 수를 해당 진법으로 바꾸어 출력하는 문제이다.

접근 방법)

일단 주어진 N 값을 하나하나 입력받아와서 우리가 알고 있는 숫자로 변환을 시켜주어야 한다.

그러기 위해서는 아스키코드를 사용하여 문제를 해결할 수 있다.

또한 주어진 N에서 입력받은 값이 숫자일 수도 있고 영어일 수도 있기 때문에 if(조건문)을 사용하여 경우 수를 나누어주도록 한다.

 

이렇게 N을 문자 하나씩 나누어 입력받은 것이 성공하였다면 Math.pow() 함수를 이용하여 제곱 계산을 처리하면 정답을 성공적으로 출력할 수 있다.

 

정답 코드 1)

import java.util.*;
import java.lang.*;
import java.io.*;

// The main method must be in a class named "Main".
class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String n = sc.next();
        int b = sc.nextInt();
        int num; // n을 아스키코드를 이용하여 숫자로 변환한 값
        int sum = 0; // b진법을 계산하기 위한 결과 값

        for(int i = 0; i < n.length(); i++){
            char chr = n.charAt(i);
            if(chr < 65){ // 입력받은 문자가 숫자일 경우
                num = (int)chr-48;
            }else{ // 입력받은 문자가 영어일 경우
                num = (int)chr-55;
            }
            sum = sum + num*(int)Math.pow(b, ((n.length()-1)-i)); // Math.pow()를 이용하여 제곱 계산
        }
        System.out.print(sum);
    }
}

 

이것을 보고 바로 아스키코드로 변환하여 계산하고 Math.pow() 함수를 이용할 수 있어야 한다는 점이 포인트인 문제인 것 같다.

 
 
반응형