자바스크립트
[JavaScript] 숫자 짝꿍 - (프로그래머스)
슈크림 붕어빵
2023. 10. 31. 17:38
X와 Y가 굉장히 큰 수일 수 있어 X와 Y를 모두 검사하며 for문을 두번 돌리면서 진행하면 시간초과로 틀린다. O(n)으로 풀어야한다.
function solution(X, Y) {
var answer = '';
var numbers=[];
X=X.split("");
X.sort(function(a,b){
return a-b;
});
Y=Y.split("");
Y.sort(function(a,b){
return a-b;
});
var j =0;
var i =0;
while(i<X.length&&j<Y.length){
if(Y[j]==X[i]){
numbers.push(Y[j]);
i++;
j++;
}
else if(X[i]>Y[j]){
j++
}
else if(Y[j]>X[i]){
i++;
}
}
if (numbers.length==0){
return "-1";
}
else{
numbers.sort(function(a,b){
return b-a;
});
numbers=numbers.join("");
if (numbers[0]==0)
numbers = "0";
}
return numbers;
}
1. 먼저 X와 Y를 오름차순으로 정렬해준다.
2. i는 X를 도는 변수, j는 Y를 도는 변수로 설정했다.
3. X[i]와 Y[j]가 같으면 같은 숫자를 모으는 numbers에 저장한다.
4. 더 작은 숫자를 돌고있는 배열의 인덱스를 같을 때까지 올린다.
5. 하나라도 끝까지 순회했으면 마친다.
6. 비어있으면 -1을 반환, 아니라면 numbers를 내림차순하고 이어붙인다. 0일 때 예외처리