
😎풀이
- 정수
n을 각 자릿수로 분리
- 분리된 자릿수를 통한 정수 빈도 기록
- 빈도를 기준으로 오름차 순 정렬하고, 값을 기준으로 동일 빈도 요소를 다시 오름차 순 정렬
- 최소 빈도, 최솟값 반환
function getLeastFrequentDigit(n: number): number {
const digits = getDigits(n)
const frequent = getFrequentMap(digits)
const sortedByFreq = [...frequent].toSorted(([aNum, aFreq], [bNum, bFreq]) => {
if(aFreq !== bFreq) return aFreq - bFreq
return aNum - bNum
})
return sortedByFreq[0][0]
};
function getDigits(num: number) {
const digits = []
while(num) {
digits.push(num % 10)
num = Math.floor(num / 10)
}
return digits
}
function getFrequentMap(numArr: number[]) {
const frequent = new Map<number, number>()
for(const num of numArr) {
frequent.set(num, (frequent.get(num) ?? 0) + 1)
}
return frequent
}