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`의 최대 길이가 길지않아 다른 방법으로도 시간 초과없이 풀 수 있었겠지만
복습 겸 효율적인 방법인 해시 테이블을 활용해 보았다.
'개발이야기 > 알고리즘' 카테고리의 다른 글
[알고리즘] 124 나라의 숫자 (0) | 2024.03.06 |
---|---|
[알고리즘] 달리기 경주 (해시) (0) | 2023.10.25 |
[알고리즘] 바탕화면 정리 (0) | 2023.04.15 |
[알고리즘] 덧칠하기 (0) | 2023.03.29 |
[알고리즘] 대충 만든 자판 (0) | 2023.03.29 |