본문 바로가기
java

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

by MiaCoder 2024. 1. 11.

 

아이디어 : 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);
    	}
    }

'java' 카테고리의 다른 글

백준 2869 달팽이 자바 java  (0) 2024.01.11
백준 2292 벌집 자바 java  (0) 2024.01.11
백준 2745 진법계산기 자바 java  (0) 2024.01.11
백준 2563 색종이 자바 java  (1) 2024.01.10
백준 1316 그룹단어 자바 java  (0) 2024.01.10