728x90

두 문자열이 포함하고 있는 수들 중 공통으로 가지고 있는 수를 이용하여 만들 수 있는 가장 큰 수

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

+ Recent posts