본문 바로가기
알고리즘 풀이

[백준] 11005번: 진법 변환 2 - java 풀이

by 코디드 2023. 6. 28.

내 풀이(잘못된 풀이. 참고 x)

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {

	public static void main(String[] args) throws IOException {
		
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		StringTokenizer st = new StringTokenizer(br.readLine());
		
		StringBuilder sb = new StringBuilder();
		
		int N = Integer.parseInt(st.nextToken());
		int B = Integer.parseInt(st.nextToken());
		
		char c = 0;
		char d = 0;
		
		while(true) {
			int digit = N-B*(N/B);
			if(0<=digit && digit <=9) {
				c= (char)(digit+48);
			}else if(10<=digit && digit<=35) {
				c = (char)(digit+55);
			}
			sb.append(c);
			N = N/B;
			
			if(N/B<B) {
				if(0<=N/B && N/B<=9) {
					d = (char)(N/B+48);
				}else if(10<=N/B && N/B<=35) {
					d = (char)(N/B+55);
				}				
				sb.append(d).append(c);
				break;
			}
		}
		System.out.println(sb);
	}
}

 

나머지(%)를 망각한 자의 몸부림.

if(N/B<B) 에서 바로 break; 를 해주니까 ZZZ 만 나와서 해당하는 경우에 N/B 와 digit을 찍어주기 위해 조건문을 추가했다. 

60466175 36 를 입력했을 때는 예제처럼 출력이 되는데 답이 세자릿수 미만일 때도 답이 무조건 000 처럼 세자리로 나왔다. 

 

다른 풀이를 참고하니 %를 이용해서 나머지를 구해주고 구한 값을 거꾸로 출력했다.

 

참고: https://m.blog.naver.com/ajy7424/222520837654

 

[JAVA/자바] 백준 11005번: 진법 변환 2

<문제> <풀이> 처음에 문제를 읽고 뭔소린가 싶었던 문제 ㅎ,, 결국 B진법 수를 만들라는 것...

blog.naver.com

 

https://we1cometomeanings.tistory.com/140

 

[java 백준]브론즈 1/ 11005번 진법 변환 2

https://www.acmicpc.net/problem/11005 11005번: 진법 변환 2 10진법 수 N이 주어진다. 이 수를 B진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다

we1cometomeanings.tistory.com

 

나중에 다시 풀어볼것.