"꾸준하고 완벽한 한 걸음"

PS/Baekjoon Online Judge

[백준 32335] 부자가 될 거야! [Java]

kimyoungrok 2025. 4. 8. 16:43
728x90

문제

https://www.acmicpc.net/problem/32335

 


풀이

주어진 문자열 S의 각 자릿수를 회전시켜 가장 작은 수를 만드는 문제다.

총 M번 회전 시켜야 하며 수는 증가하는 방향으로 회전해야 한다.

맨 앞자리부터 시작해서 0으로 만들 수 있을 만큼 M이 크다면 돌려주고, 아니면 다음 수로 넘어가면 된다.

        // Solve
        for (int i = 0; i < N - 1; ++i) {
            if (S[i] > '0') {
                final int num = S[i] - '0';
                if (num + M >= 10) {
                    S[i] = '0';
                    M -= (10 - num);
                }
            }
        }

만약 마지막 한 자리를 남기고 M이 남았다면, M번만큼 전부 회전하는 방법이 최선이다.

        if (M > 0) {
            final int num = S[N - 1] - '0';
            final int r = M % 10;
            S[N - 1] = (char) ((num + M) % 10 + '0');
        }

소스코드

https://github.com/rogi-rogi/problem-solving/blob/main/baekjoon-online-judge/easy/01639.java

 

problem-solving/baekjoon-online-judge/easy/01639.java at main · rogi-rogi/problem-solving

Daily Problem Solving Challenges. Contribute to rogi-rogi/problem-solving development by creating an account on GitHub.

github.com

 

728x90