

1. 문제 풀이 아이디어
- 나머지를 계산하여 진법을 변환하는 방법을 사용하면 문제를 해결할 수 있다.
2. 나의 정답 코드
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
StringBuilder stringBuilder = new StringBuilder();
StringTokenizer stringTokenizer = new StringTokenizer(bufferedReader.readLine());
int x = Integer.parseInt(stringTokenizer.nextToken());
int b = Integer.parseInt(stringTokenizer.nextToken());
boolean chk = false;
if (x < 0 && b > 0) {
chk = true;
x = -x;
}
while (x != 0) {
int m = x % b;
x /= b;
if (m < 0) {
x++;
m -= b;
}
stringBuilder.append(m);
}
if (chk)
stringBuilder.append('-');
System.out.println(stringBuilder.length() > 0 ? stringBuilder.reverse() : 0);
bufferedReader.close();
}
}
3. 정리
x
가 음수이고b
가 양수인 경우, 이를 처리하기 위해chk
를true
로 설정하고x
를 양수로 변환한다.
- 반복문을 사용해
x
가0
이 될 때까지 다음 작업을 반복한다.
x
와b
의 나머지를 구해m
에 저장하고,x
를b
로 나눈 몫으로 갱신한다.
- 만약
m
이 음수라면x
를 1 증가시키고,m
에서b
를 뺀다.
- 계산된
m
을stringBuilder
에 추가한다.
- 반복문이 종료된 후,
chk
가true
라면stringBuilder
에-
를 추가한다.
- 최종적으로,
stringBuilder
의 길이가 0보다 크면 뒤집어서 출력하고, 그렇지 않으면0
을 출력하여 문제를 해결한다.
Share article