알고리즘/프로그래머스
[프로그래머스 코딩테스트 고득점 Kit / 해시] 폰켓몬 (python)
난감
2024. 1. 10. 14:32
728x90
풀이
def solution(nums):
answer = 0
mon = set(nums)
if len(mon) <= len(nums)/2:
answer = len(mon)
else:
answer = len(nums)/2
return answer
- 집합(set)을 사용하여 문제 해결
- nums 배열을 mon이라는 집합 안에 넣어서 포켓몬의 중복을 없앴다.
- 종류가 겹치지 않는다고 가정했을 때, 내가 가져갈 수 있는 최대값은 N/2임. 따라서 겹치지 않는 포켓몬이 N/2 이상이라면 N/2가 최대값이고, 겹치지 않는 포켓몬이 N/2보다 작다면 겹치지 않는 포켓몬 전체 수가 최대값이 됨.
- 해시 문제라서 처음에는 딕셔너리로 풀었는데 값을 저장할 이유도 없고 중복만 제거하면 돼서 집합으로 바꿈. 연산시간이 훨씬 줄었다.
반응형