코딩 테스트/프로그래머스
[Python] 프로그래머스 폰켓몬
위시리
2024. 10. 8. 00:45
알고리즘 고득점 kit - 해시 - lv 1
문제 분석
- n마리의 포켓몬 중 n/2마리를 가져갈 수 있음
- 포켓몬 종류에 따라 번호를 붙임
- >> 같은 종류의 포켓몬은 같은 번호
- 최대한 많은 종류의 포켓몬을 가져가고 싶다.
- 가장 많은 종류의 포켓몬 n/2 마리를 선택하는 방법
- 포켓몬 종류 번호의 개수를 return
코드 설계
- nums → HashMap (key : 종류, value : 마릿수) -- 이걸 어떻게 구현해야할 지 잘 모르겠다..
- num list를 앞에서 부터 하나씩 값을 빼고 ( for i in nums )
- cnt = [ ] 배열 생성
- nums 안에 있는 값 i에 대해 몇개씩 존재하는지 확
- if n/2 >= key의 갯수 이면 모든 종류를 가질 수 있음
- else n/2 종류를 가질 것
정답 코드
def solution(nums):
answer = 0
cnt = {}
for i in nums :
cnt[i] = nums.count(i)
keys = len(cnt)
if len(nums)//2 <= keys :
answer = len(nums)//2
else :
answer = keys
answer = answer
return answer
다른 사람 코드
def solution(ls):
return min(len(ls)/2, len(set(ls)))
def solution(nums):
return min(len(set(nums)), len(nums) // 2)
def solution(nums):
answer = 0
myList = set(nums)
if len(nums)/2 > len(myList):
answer = len(myList)
else:
answer = len(nums)/2
return answer