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보다 작다면 겹치지 않는 포켓몬 전체 수가 최대값이 됨.
- 해시 문제라서 처음에는 딕셔너리로 풀었는데 값을 저장할 이유도 없고 중복만 제거하면 돼서 집합으로 바꿈. 연산시간이 훨씬 줄었다.
반응형
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 코딩테스트 고득점 Kit / 해시] 의상 (python) (0) | 2024.01.13 |
---|---|
[프로그래머스 코딩테스트 고득점 Kit / 해시] 전화번호 목록 (python) (1) | 2024.01.10 |
[프로그래머스 코딩테스트 고득점 Kit / 해시] 완주하지 못한 선수 (python) (1) | 2024.01.09 |
[프로그래머스 코딩테스트 고득점 Kit / 스택/큐] 주식가격 (python) (0) | 2024.01.07 |
[프로그래머스 코딩테스트 고득점 Kit / 스택/큐] 다리를 지나는 트럭 (python) (0) | 2024.01.06 |