내 풀이(잘못된 풀이. 참고 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
나중에 다시 풀어볼것.
'알고리즘 풀이' 카테고리의 다른 글
[백준] 2903번: 중앙 이동 알고리즘 - java 풀이 (0) | 2023.06.28 |
---|---|
[백준] 2720번: 세탁소 사장 동혁 - java 풀이 (0) | 2023.06.28 |
[백준] 2745번: 진법 변환 - java 풀이 (0) | 2023.06.28 |
[백준] 1316번: 그룹 단어 체커 - java 풀이 (0) | 2023.06.27 |
[백준] 2941번: 크로아티아 알파벳 - java 풀이 (0) | 2023.06.27 |