
😎풀이
digits의 숫자 빈도 저장
- 100부터 999까지의 수 중 짝수 순회
2-1. 현재 수의 각 자릿 수 빈도 저장
2-2. 저장된 각 자릿 수 빈도 순회
2-3. 조합될 숫자가 digits에 존재하며, 각 자릿수를 모두 구성할 수 있다면, 정답 배열에 추가
- 짝수이며,
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
};