1. 숫자 짝꿍을 구한다.
2. 숫자 짝꿍을 역순으로 정렬해서 가장 큰 수를 반환한다.
function solution(X, Y) {
var answer = '';
// 짝꿍 찾기
var nums = [];
var arrY = [...Y];
for(e of X){
for(i in arrY){
if(e === arrY[i]){
arrY.splice(i, 1);
nums.push(e);
break;
}
}
}
if(nums.length ===0) return '-1';
nums.sort((a, b) => b-a);
answer = +nums.join('');
return answer.toString();
}
X와 Y를 돌면서 X의 숫자가 Y에 있는지 찾는 방법으로 했다.
그런데 시간초과가 떴다.
for문을 두 개 돌면서 n^2이 되어 그런 것 같다.
그래서 생각한 방안은 X와 Y에 있는 1,2,3, ... , 0을 모두 세는 것이다.
9부터 0까지 역순으로 내려오면서, X와 Y에 있는 갯수 중 더 적은 수 만큼 숫자를 붙이면 가장 큰 수가 완성된다.
그럼 2*n이 되어 훨씬 빠르게 계산할 수 있다.
function solution(X, Y) {
var answer = '';
// 짝꿍 찾기
var numX = new Array(10).fill(0);
var numY = new Array(10).fill(0);
for(e of X){
numX[+e]++;
}
for(e of Y){
numY[+e]++;
}
for(i = 9; i >= 0; i--){
answer += i.toString().repeat(Math.min(numX[i], numY[i]));
}
if(answer.length === 0) return '-1';
if(+answer === 0) return '0';
return answer;
}
마지막 예외 처리 부분이 둘 추가된 코드.
시간 내로 잘 작동한다.
'코딩연습' 카테고리의 다른 글
| (JavaScript) 햄버거 만들기 (0) | 2024.12.13 |
|---|---|
| (JavaScript) 대충 만든 자판 (0) | 2024.12.11 |
| (JavaScript) 문자열 나누기 (0) | 2024.12.10 |
| (JavaScript) 체육복 (0) | 2024.12.10 |
| (JavaScript) 옹알이(2) (0) | 2024.12.09 |