코딩연습

(JavaScript) 숫자 짝꿍

Realuda72 2024. 12. 9. 14:27

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