[프로그래머스] 숫자 짝궁

최유나·2024년 9월 6일
0

프로그래머스

목록 보기
49/53

✨ 숫자 짝궁

나의 풀이

function solution(X, Y) {
    let answer = "";
    
    X = X.split('');
    Y = Y.split('');
    
    for(let i = 0; i < 10; i++) {
        let xCountForI = X.filter(x => Number(x) === i).length; // X 안에 i가 몇개 있는지 알아냄
        let yCountForI = Y.filter(y => Number(y) === i).length; // Y 안에 i가 몇개 있는지 알아냄
        answer += i.toString().repeat(Math.min(xCountForI, yCountForI)); // 두개의 숫자중 더 적은게 겹치는 숫자 입니다.
    }    
    
    if(answer === "") { // 겹치는게 없을 경우 -1
        return "-1";
    }
    else if(answer.split('').filter(x => x === "0").length === answer.length) { // 전부 0 밖에 없다면 0
        return "0";
    }
    else {
        return answer.split('').sort().reverse().join(''); // 내림차순 정렬해서 return
    }
    
}

다른사람의 풀이

function solution(X, Y) {
    let result = '';
    const numObj = {};

    for (const char of X) {
        numObj[char] = (numObj[char] || 0) + 1;
    }

    for (const char of Y) {
        if (!numObj[char]) continue;
        result += char;
        numObj[char]--;
    }

    if (result === '') return '-1';
    if (+result === 0) return '0';
    return [...result]
        .map((num) => +num)
        .sort((a, b) => b - a)
        .join('');    
}


// want
// X, Y에서 짝으로 숫자가 존재하는 경우, 해당 문자열을 통해 만들 수 있는 최대값을 반환하라

// solving
// 1. X를 순회하며 각 숫자의 개수 세어 객체 or 배열에 저장 
// 2. Y를 순회하며 각 문자가 1번에서 저장한 객체에 저장한 값이 1이상인 경우, 그 값을 -1하고 result에 추가
// 3. 2번에서 만들어진 문자열이 빈 문자열이라면 -1 반환
// 5. 2번에서 만들어진 문자열을 숫자로 변환했을 때 0이라면 0 반환
// 6. 해당 문자열을 내림차순 정렬한 문자열 반환

0개의 댓글

관련 채용 정보