😎풀이

  1. deck 요소의 빈도 수 확인
  2. 모든 요소의 최대 공약수가 2 이상인지 확인
    2-1. 2개 이상의 묶음으로 나눌 수 있는지 검증
  3. 최대 공약수가 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)
}
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글