본문 바로가기
java

백준 2745 진법계산기 자바 java

by MiaCoder 2024. 1. 11.

 

아이디어 : 제곱을 나타나는 메소드, 숫자를 판별하는 방법을 주의해보자

 

import java.util.Scanner;



public class Main {
    public static void main(String[] args) throws Exception {
    	
    	
    	Scanner sc = new Scanner(System.in);
    	
    	String str = sc.next(); // 바꿀 수를 입력받음 
    	int num = sc.nextInt(); // 몇진법으로 바꿀건지 입력받음
    	int sum = 0;//각 자릿수를 변환한 값을 합친 최종 값
    	
    	for(int i = 0; i < str.length(); i++) {
        	// 입력받은 문자열의 길이만큼 반복함으로서 자릿수마다 진법변환을 진행
            
    		char a = str.charAt(i);
            //a는 한 문자열의 i번째 문자를 입력받음
    		
    		if(Character.isDigit(a)) { // a가 숫자라면
    			int digit = Character.getNumericValue(a); 
                // a를 int타입으로 digit에 저장
                
    			int dou = (int) Math.pow(num, str.length()-i-1);
                //100의 자리 수라면 num을 2번 제곱해야함. 규칙에 따라 -1포함
                // Math.pow를 사용하여 num의 str.length()-i-1만큼 제곱함
                
    			sum = sum + digit * dou;
                sum에 계산한 자릿수의 값을 저장
    		}
    		else if(Character.isUpperCase(a)){
            	// 문자일 경우 계산
    			int x = a - 'A' + 10;
                // 대문자 A부터 10을 나타낸다. B는 11 이런식.
                // 입력받은 값에서 아스키코드 값인 'A'를 빼고 + 10을 더하면 A부터 10(Z는 26)을 표현한다 
    			int dou = (int) Math.pow(num, str.length()-i-1);
    			sum = sum + x * dou;
    		}
    	}
    	
    	System.out.print(sum);
    	
    			
    	
    	}
    }