Algorithm/프로그래머스

세무민의 알고가자 : 프로그래머스 폰켓몬 문제 풀기

세기루민 2021. 2. 26. 15:01
728x90

오늘 풀어볼 문제는 폰켓몬!

바로 시작하겠습니다!


문제 설명 & 제한 사항


입출력 예시


풀이

우선 문제를 재대로 해석하지 않으면 어렵게 느낄 수 있습니다.

진짜 문제를 이해했다면 쉬운 문제라고 생각이 들더라구요!

위의 예를 잘 보시면 

nums라는 배열의 총 개수 -> N 

찾으려는 폰캣몬의 개수 -> N / 2

폰켓몬은 중복이 될 수 없다!

여기서 살짝 문제 푸는 방법을 아시겠죠?

결국에는 nums의 개수를 2로 나눈 값만큼 포켓몬을 찾되 중복되는 값이 아닌 최대값을 찾으면 됩니다.

여기서 포인트는 중복되는 값을 제거해준 값도 확인해주면 됩니다.

결론적으로

1. list -> 중복값 제거해주기

2. 개수 일치하는지 비교


코드

def solution(nums):
    result = len(nums) // 2
    nums = list(set(nums))
    answer = 0
    
    if result >= len(nums):
        answer = len(nums)
    else:
        answer = result
        
    return answer

코드는 엄청 간단합니다. 

말 그대로 Set을 이용해서 중복을 제거해준 뒤 

값이 일치하는지 여부를 확인해주면 됩니다. 

result는 N/2에 대한 값인데 해당 값이 중복값이 제거된 리스트의 개수보다 크다면?

결국에는 중복값을 제거한 리스트의 개수가 폰캣몬을 가장 많이 찾을 수 있는 최대값이겠죠?

그래서 위의 코드처럼 구현해줬습니다.

 

끝!


오늘 포스팅은 생각보다 너무 쉬웠네요...ㅎ

제가 아마 쉬운 문제 위주로 포스팅하고 있지만...

사실 어려운 문제는 풀다가 테스트 케이스가 막혀서 다른 문제로 넘어가는 경우가 종종 있어요 ㅎㅎ

나중에는 어려운 알고리즘으로 찾아오겠습니답!

 

728x90