[LeetCode] 2094. Finding 3-Digit Even Numbers

Chobby·5일 전
1

LeetCode

목록 보기
666/710

😎풀이

  1. digits의 숫자 빈도 저장
  2. 100부터 999까지의 수 중 짝수 순회
    2-1. 현재 수의 각 자릿 수 빈도 저장
    2-2. 저장된 각 자릿 수 빈도 순회
    2-3. 조합될 숫자가 digits에 존재하며, 각 자릿수를 모두 구성할 수 있다면, 정답 배열에 추가
  3. 짝수이며, digits로 구성할 수 있는 3자릿 수 목록 반환
function findEvenNumbers(digits: number[]): number[] {
    const digitFrequent = new Map()
    for(const number of digits) digitFrequent.set(number, (digitFrequent.get(number) ?? 0) + 1)
    const evenNumbers = []
    for(let i = 100; i < 1000; i += 2) {
        const curFrequent = new Map()
        let remain = i
        while(remain) {
            const curNum = remain % 10
            curFrequent.set(curNum, (curFrequent.get(curNum) ?? 0) + 1)
            remain = Math.floor(remain / 10)
        }
        let isSameFrequent = true
        for(const [key, value] of curFrequent) {
            if(!digitFrequent.has(key)) {
                isSameFrequent = false
                break
            }
            if(digitFrequent.get(key) < value) {
                isSameFrequent = false
                break
            }
        }
        if(isSameFrequent) evenNumbers.push(i)
    }
    return evenNumbers
};
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글