
-Code
import java.util.*;
class Solution {
public String solution(String X, String Y) {
// X와 Y의 각 숫자 갯수 세기
int[] xCnt = new int[10];
int[] yCnt = new int[10];
for (char n : X.toCharArray()) {
xCnt[n - '0']++;
}
for (char n : Y.toCharArray()) {
yCnt[n - '0']++;
}
StringBuilder answer = new StringBuilder();
// 9부터 0까지 공통 개수만큼 붙이기
for (int i = 9; i >= 0; i--) {
int cnt = Math.min(xCnt[i], yCnt[i]);
for (int j = 0; j < cnt; j++) {
answer.append(i);
}
}
// 공통된 숫자가 없는 경우
if (answer.length() == 0) return "-1";
// 0이 반복되어 000이거나 한 경우
if (answer.charAt(0) == '0') return "0";
// 아니면 결과 출력
return answer.toString();
}
}
풀면서 2 가지 문제가 생겼습니다. 처음에는 포함된 값이면 추가하는 식으로 했으나 이렇게 하면 시간문제와 사용한 숫자를 제외해야 하는데 문제가 생겨 개수를 새는 방식이 더 좋다는 힌트를 보고 수정했고, 두 번째 문제는 0이 반복되어 출력된 경우를 간과하여서 해당 부분을 수정해 해결했습니다.
'Beakjoon&프로그래머스 > Java' 카테고리의 다른 글
| [프로그래머스/Java] [PCCE 기출문제] 10번 / 데이터 분석 (0) | 2026.03.13 |
|---|---|
| [백준/Java] 35367번 Snakey String (0) | 2026.03.12 |
| [백준/Java] 35370번 Memories of Passport Control (0) | 2026.03.11 |
| [프로그래머스/Java] 체육복 (0) | 2026.03.10 |
| [백준/Java] 2004번 조합 0의 개수 (0) | 2026.03.10 |