코드짜는 노인네

[프로그래머스] 폰켓몬 - 문제해결과정 본문

코딩 테스트

[프로그래머스] 폰켓몬 - 문제해결과정

ikohong 2022. 9. 11. 09:54
728x90
반응형

[프로그래머스] 폰켓몬 - 문제해결과정


 

문제 : 
폰켓몬 N개 중, N/2개를 가져갈때, 가져가는 폰켓몬 종류의 최대 수를 구하라!
EX >
nums = [3,1,2,3]
result = 2

나의 문제 해결 과정


처음에는 무언가 복잡하게 생각을 했습니다.

'리스트안의 임의의 값을 랜덤으로 가져올때, 가져온 값을 새로운 리스트에 포함시킨 다음, 기존 리스트에서 제거를 하고, 다시 새로운 값을 가져올때, 가져온 값이 있는 경우, 제외를 해야되겠다.'

라고 생각을 했습니다. 그러다가 문득 '일단 중복을 제거 하자' 라 생각을 했습니다.

# 리스트안의 중복 값들 제거
set_nums = set(nums)

중복을 딱 제거 하고 생각을 해보니깐 '굳이 리스트를 새로 만들어서 값들을 왔다갔다 할 필요가 없겠는데?'라는 생각이 들었습니다. 

def solution(nums):
    answer = 0
    set_nums = set(nums)

    if len(set_nums) > len(nums)/2:
        answer = int(len(nums)/2)
    else:
        answer = len(set_nums)
    
    return answer

결론은 'set()'함수로 리스트안의 중복값을 제거를 했을때, 중복값을 제거한 리스트안에 있는 값의 갯수(길이)가 '리스트의 길이 / 2'(가져가는 폰켓몬의 갯수)의 값을 비교해 작은값을 결과값으로 지정해주면 되었습니다. 매우 간단한 문제였고, 결과를 보고 '이 정도면, 코드를 짧게 작성했겠지?'라고 생각을 했지만, 결론은 전혀 아니였습니다. 역시 능력자분들은 많으셔서 저보다 훨씬 더 짧은 코드를 작성하신분들이 많더라구요! 문제를 해결하고 포스팅할때마다 작성하지만, 역시 코딩공부를 더 해야겠다는 생각과 더불어 '내장함수'를 더 많이 공부해야겠다는 생각이 들었습니다! 

728x90
반응형
Comments