두 문자열이 포함하고 있는 수들 중 공통으로 가지고 있는 수를 이용하여 만들 수 있는 가장 큰 수
public String solution(String X, String Y) {
StringBuilder answer = new StringBuilder();
int[] cArr = new int[10];
for (int i = 0; i < cArr.length; i++) {
int xlen = X.length();
int ylen = Y.length();
X = X.replaceAll(i+"", "");
Y = Y.replaceAll(i+"", "");
xlen = xlen-X.length();
ylen = ylen-Y.length();
if(xlen>0&&ylen>0) {
cArr[i] = Math.min(xlen, ylen);
}
}
for (int i = 0; i < cArr.length; i++) {
int num = cArr[cArr.length-1-i];
if(num!=0) {
String add = (9-i)+"";
answer.append(add.repeat(num));
}
}
if(answer.length()==0)return "-1";
if(answer.charAt(0)=='0')return "0";
return answer.toString();
}
X,Y의 길이가 3백만까지 제한되어있고, 0으로 시작하지 않는 제한 조건이 있다.
길이 문제로 시간초과, int타입 제한에 문제가 발생할 수 있다.
시간초과 문제를 해결하기 위해 StringBuilder를 사용하였고
""과 "0.."등을 확인할 때
정수형 타입의 길이 제한을 피하기 위해 toString으로 변환한 뒤 확인하려하면 overflow의 문제가 발생하므로
length 와 charAt메서드를 사용하여 확인하였다.
'Java > Coding Test' 카테고리의 다른 글
모의고사 문제 풀이 (0) | 2023.09.30 |
---|---|
개인정보 수집 유효 기간 문제 풀이 (0) | 2023.09.28 |
옹알이2 문제 풀이 (0) | 2023.09.28 |
과일 장수 문제 풀이 (0) | 2023.09.28 |
2016년 문제 풀이 (0) | 2023.09.28 |