java

백준 11005 진법변환2 10진수를 N진법으로 java 자바

MiaCoder 2024. 1. 11. 11:29

 

아이디어 : 1. StringBuilder을 이용하야 한글자 씩 답을 만들어나가 보자

                2. 나머지가 10이 넘는 경우 대분자 알파벳으로 바꾸는 방법을 고려해 보자

 

import java.util.Scanner;



public class Main {
    public static void main(String[] args) throws Exception {
    	
    	
    	Scanner sc = new Scanner(System.in);
    	
    	int num = sc.nextInt(); // 변환할 숫자를 입력받음
    	int N = sc.nextInt(); // 변환할 진수를 입력받음
    	
    	StringBuilder sb = new StringBuilder();
    	//진법 변환은 num을 N으로 나누는 것을 반복하고 역순으로 써야하는 특징이 있기에 StringBuilder을 사용한다.
    	
    	while(num > 0) {
    		//나눌 값이 점점 작아지다 마지막에 0이 되는것을 활용하여 반복조건을 제시
    		
    		int reminder = num % N;
    		//reminder은 나누고 난 나머지  즉 몫의 마지막 자리를 나타낸다.
    		
    		if(reminder > 9) {
    			char mapper =(char) (reminder + 'A' - 10);
    			sb.insert(0, mapper);
                //10 이상이라면 대문자 A -Z로 나타내기위해 매핑한다.
                // 몫의 마지막자리를 나타내는 reminder을 계속 0번째 자리에 넣게 하면서 역순으로 넣는다.
    		}
    		else {
    			sb.insert(0, reminder);
                // 몫의 마지막자리를 나타내는 reminder을 계속 0번째 자리에 넣게 하면서 역순으로 넣는다.
    		}
    		
    		num = num / N;
    		//다음 계산을 위해 나는 몫으로 업데이트 한다.
    		
    	}
    	
    	System.out.print(sb);
    	}
    }