본문 바로가기
개발이야기/알고리즘

[알고리즘] 폰켓몬 (해시)

by KimHarry 2023. 10. 27.

1. 조건

배열 `nums`의 최대 길이 10,000

 

2. 과정

배열 `nums`를 순회하며 해시 테이블을 생성한다. - O(N)

생성된 테이블 `table`의 길이에 따라 return 값을 정하는 조건문을 작성한다.

 

3. 풀이

function solution(nums) {
    // 해시 테이블 생성
    const table = {}
    for (let i = 0; i < nums.length; i += 1) {
        if (!table[nums[i]]) {
            table[nums[i]] = 1;
            continue;
        }
        
        table[nums[i]] += 1
        continue;
    }
    
    // 테이블 length에 따른 return값 도출
    const tableLength = Object.keys(table).length;
    const maxPickCount = nums.length / 2
    
    return tableLength > maxPickCount ? maxPickCount : tableLength
}

 

4. 후기

사실 배열 `nums`의 최대 길이가 길지않아 다른 방법으로도 시간 초과없이 풀 수 있었겠지만

복습 겸 효율적인 방법인 해시 테이블을 활용해 보았다.