inblog logo
|
LHS's Study Space
    알고리즘문제풀기랜덤마라톤

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

    lhs's avatar
    lhs
    Dec 16, 2024
    [랜덤 마라톤] 진법 변환(1112)
    Contents
    1. 문제 풀이 아이디어2. 나의 정답 코드3. 정리
    www.acmicpc.net
    https://www.acmicpc.net/problem/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가 양수인 경우, 이를 처리하기 위해 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
    Contents
    1. 문제 풀이 아이디어2. 나의 정답 코드3. 정리

    LHS's Study Space

    RSS·Powered by Inblog