반응형
CODE
import java.util.*;
class Solution {
public String solution(String X, String Y) {
StringBuilder answer = new StringBuilder();
int[] xCntArr = new int[10];
int[] yCntArr = new int[10];
for(String x : X.split("")) {
xCntArr[Integer.parseInt(x)]++;
}
for(String y : Y.split("")) {
yCntArr[Integer.parseInt(y)]++;
}
for(int i = 9; i >= 0; i--) {
while(xCntArr[i] > 0 && yCntArr[i] > 0) {
answer.append(i);
xCntArr[i]--;
yCntArr[i]--;
}
}
if("".equals(answer.toString())) return "-1";
if("0".equals(answer.toString().substring(0, 1))) return "0";
return answer.toString();
}
}
맨 처음에 X, Y를 char 배열로 만든 후 정렬 > StringBuilder로 변환 > 정렬(내림차순) > for문으로 indexOf()로 찾음 이런 식으로 했다가 시간 초과 어택을 맞고 이것저것 찾아본 결과 힌트 중에 반복문의 기준을 X나 Y의 길이에 두지 말고, 어차피 0~9로 이루어진 숫자이니 이 숫자를 중심으로 생각하라는 힌트를 보고 코드 작성했다. 어려운 내용의 코드는 아니지만 시간 복잡도를 생각해볼 수 있는 좋은 문제였던 거 같다.
실행 결과
반응형