알고리즘문제

프로그래머스 > 숫자짝궁

단점이없어지고싶은개발자 2022. 10. 18. 22:08
반응형

1. 문제를 접했을 때, 해당 문자열을 찾고 result에 더해주고, 나머지 배열로 바꾼 문자열에서 문자열을 빼주는 형식으로 진행했다.

2. 하지만, 11 ~ 15번까지 시간초과가 나왔다.

3. 그래서 질문하기에서 팁을 얻었다. 0 ~ 9까지의 숫자를 생각해보라.

4. 아래에서는 문자열을 filter로 0 ~ 9까지 돌면서 filter를 해서 반복해서 숫자를 넣어줬다.

5. repeat이란 메소드를 사용해서 만약 해당 숫자가 없으면 0이되니까 반복되지 않고 넘어가게 된다.

 

function solution(X, Y) {
     const first = X.split('');
     const second = Y.split('');
     let result = '';
    
     for (let i = 0; i < first.length; i++) {
         if (second.includes(first[i])) {
             second.splice(second.indexOf(first[i]), 1);
             result += first[i];
         }
     }
    
     if (!result) return '-1'
     return Number(result) === 0 ? '0' : result.split('').sort((a, b) => b - a).join('');
}

 

function solution(X, Y) {
    let first = [...X];
    let second = [...Y];
    let result = '';

    for (let i = 0; i < 10; i++) {
        const tempX = first.filter((item) => +item === i).length;
        const tempY = second.filter((item) => +item === i).length;
        result += i.toString().repeat(Math.min(tempX, tempY));
    }
    
    if (!result) return '-1'
    return Number(result) === 0 ? '0' : result.split('').sort((a, b) => b - a).join('');
}
반응형