
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일 때 예외처리
'자바스크립트' 카테고리의 다른 글
js 싱글스레드와 비동기처리 (0) | 2025.05.17 |
---|---|
[JavaScript] 배열 slice()와 pop()의 시간복잡도 - 햄버거만들기(프로그래머스) (1) | 2023.10.31 |
[JavaScript] n까지의 약수 구하기 - 기사단원의 무기 (프로그래머스) (0) | 2023.10.30 |
[JavaScript] 아스키 코드 변환 - 둘만의 암호(프로그래머스) (0) | 2023.10.30 |
[JavaScript] sort함수 정리 (0) | 2023.10.26 |