
😎풀이
deck
요소의 빈도 수 확인
- 모든 요소의 최대 공약수가 2 이상인지 확인
2-1. 2개 이상의 묶음으로 나눌 수 있는지 검증
- 최대 공약수가 2 이상이라면,
true
아니라면 false
반환
function hasGroupsSizeX(deck: number[]): boolean {
if(deck.length === 1) return false
const frequent = new Map()
for(const num of deck) {
frequent.set(num, (frequent.get(num) ?? 0) + 1)
}
let g = -1
for(const curFrequent of frequent.values()) {
if(g === -1) g = curFrequent
else g = gcd(g, curFrequent)
}
return g >= 2
};
function gcd(a: number, b: number): number {
if(a % b === 0) return b
return gcd(b, a % b)
}