[백준 09440] 숫자 더하기 [Java]
2025. 10. 11. 01:46ㆍPS 풀이/Baekjoon Online Judge
문제
9440번: 숫자 더하기
boj.ma
풀이
문제 요약
N개의 수를 사용해 합이 최소인 두 수를 만들자.
아이디어
두 수의 합이 최소가 되기 위해서는, 주어진 수를 오름차순으로 정렬 후 번갈아 사용해 두 수를 만들면 된다.
두 수의 큰 자릿수에 작은 수를 부여해야 두 수의 합이 작아지기 때문이다.
N개의 수의 빈도를 구하고,
0이 아닌 가장 작은 수를 두 수에 부여한 후,
남은 수들을 번갈아가며 부여하면 된다.
public class Main {
private static int solve(int[] A, int N) {
...
int[] nums = new int[2];
for (int idx = 0; idx < 2; ++idx) {
for (int i = 1; i <= 9; ++i) {
if (count[i] > 0) {
--count[i];
nums[idx] = i;
break;
}
}
}
boolean isLeft = true;
for (int i = 0; i <= 9; ++i) {
while (count[i]-- > 0) {
if (isLeft) {
nums[0] = nums[0] * 10 + i;
} else {
nums[1] = nums[1] * 10 + i;
}
isLeft = !isLeft;
}
}
return nums[0] + nums[1];
}
풀이 시간
20분
소스코드
https://github.com/rogi-rogi/problem-solving/blob/main/baekjoon-online-judge/easy/09440.java
problem-solving/baekjoon-online-judge/easy/09440.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
'PS 풀이 > Baekjoon Online Judge' 카테고리의 다른 글
| [백준 23350] K 물류창고 [Java] (0) | 2025.10.12 |
|---|---|
| [백준 29891] 체크포인트 달리기 [Java] (0) | 2025.10.11 |
| [백준 16927] 배열 돌리기 2 [Java] (0) | 2025.10.09 |
| [백준 15927] 회문은 회문아니야!! [Java] (0) | 2025.10.08 |
| [백준 25046] 사각형 게임 (Small) [Java] (0) | 2025.10.06 |