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
'PS > Baekjoon Online Judge' 카테고리의 다른 글
[백준 23827] 수열 (Easy) [Java] (0) | 2025.04.12 |
---|---|
[백준 30979] 유치원생 파댕이 돌보기 [Java] (0) | 2025.04.09 |
[백준 01639] 행운의 티켓 [Java] (0) | 2025.04.07 |
[백준 25594] HG 음성기호 [Java] (0) | 2025.04.06 |
[백준 01408] 24 [Java] (0) | 2025.04.04 |