[랜덤 마라톤] 진법 변환(1112)

lhs's avatar
Dec 16, 2024
[랜덤 마라톤] 진법 변환(1112)
notion image
notion image

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가 양수인 경우, 이를 처리하기 위해 chktrue로 설정하고 x를 양수로 변환한다.
  • 반복문을 사용해 x0이 될 때까지 다음 작업을 반복한다.
  • xb의 나머지를 구해 m에 저장하고, xb로 나눈 몫으로 갱신한다.
  • 만약 m이 음수라면 x를 1 증가시키고, m에서 b를 뺀다.
  • 계산된 mstringBuilder에 추가한다.
  • 반복문이 종료된 후, chktrue라면 stringBuilder-를 추가한다.
  • 최종적으로, stringBuilder의 길이가 0보다 크면 뒤집어서 출력하고, 그렇지 않으면 0을 출력하여 문제를 해결한다.
Share article

LHS's Study Space