17일차
class Solution {
public String solution(String X, String Y) {
String answer = "";
int x = 0, y = 0, length = 0;
for (int j = 9; j >= 0; j--) {
if (X.contains(String.valueOf(j)) && X.contains(String.valueOf(j))) {
x= X.length() - X.replace(String.valueOf(j), "").length();
y= Y.length() - Y.replace(String.valueOf(j), "").length();
length = Math.min(x, y);
for (int i = 0; i < length; i++) {
answer += j;
}
}
}
if (answer == "") {
answer = "-1";
}
if (answer.replace("0", "").equals("")) {
answer = "0";
}
System.out.println(answer);
return answer;
}
}
시간 초과 발생. 찾아보니까
replace를 사용해서 시간이 오래걸림.
class Solution {
public String solution(String X, String Y) {
StringBuilder answer = new StringBuilder();
int[] x = {0,0,0,0,0,0,0,0,0,0};
int[] y = {0,0,0,0,0,0,0,0,0,0};
// X의 첫글자가 9면 x array의 index값이 9에 1씩 올라간다.
// x array를 활용하여 X안에 어떤 숫자가 얼마나 들어있는지 확인한다.
for(int i=0; i<X.length();i++){
// 아스키코드 48 = "0"이다.
x[X.charAt(i)-48] += 1;
}
for(int i=0; i<Y.length();i++){
y[Y.charAt(i)-48] += 1;
}
// 9 부터 시작해 0까지
for(int i=9; i >= 0; i--){
// x와 y중 i값을 최소로 가진만큼 문자열에 추가
for(int j=0; j<Math.min(x[i],y[i]); j++){
answer.append(i);
}
}
// answer에 아무값도 입력이 안돼있으면 -1 리턴
if("".equals(answer.toString())){
return "-1";
// answer에 000...만 추가돼있으면 0 리턴
}else if(answer.toString().charAt(0)==48){
return "0";
}else {
return answer.toString();
}
}
}
배열을 이용해 숫자를 얼마나 가지고 있는지 활용하는거에서 정말 참신하다 생각했다.