

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