시작하기 전에
프로그래머스 알고리즘 고득점 Kit에서 해시 단원의 두 번째 문제입니다.
I. Description
II. Code
def solution(nums):
pocket_dict = {}
# {'포켓몬 번호': '포켓몬 개수'} 형태의 딕셔너리 생성
for num in nums:
pocket_dict[num] = pocket_dict.get(num, 0) + 1
# 포켓몬 종류의 개수가 전체 개수의 절반보다 작거나 같으면 그 개수를 반환
return min(len(pocket_dict), len(nums) // 2)
# Test cases
if __name__ == "__main__":
nums_list = [[3, 1, 2, 3], [3, 3, 3, 2, 2, 4], [3, 3, 3, 2, 2, 2]]
for nums in nums_list:
result = solution(nums)
print(result)
입출력 예 #1과 #2를 보면, N/2마리의 포켓몬을 선택할 때 나오는 종류의 최댓값은 당연히 N/2다.
결국 고려해야 하는 경우는 원래부터 포켓몬의 종류의 개수가 N/2보다 작은 경우다. 그러한 경우에 포켓몬의 종류의 개수를 리턴하면 된다.
'🧑💻 Coding Test > Hash Table' 카테고리의 다른 글
[Programmers] 의상 (0) | 2025.07.01 |
---|---|
[Programmers] 전화번호 목록 (0) | 2025.06.30 |
[Programmers] 완주하지 못한 선수 (0) | 2025.06.29 |
[LeetCode] 36. Valid Sudoku (0) | 2025.01.25 |
[LeetCode] 17. Letter Combinations of a Phone Number (0) | 2025.01.25 |