[프로그래머스] Lv1 - 폰켓몬

김멉덥·2023년 7월 17일
0

알고리즘 공부

목록 보기
38/171
post-thumbnail
post-custom-banner

문제

프로그래머스 코딩테스트 고득점 Kit - 해시


코드 구현

def solution(nums):
    pick_num = len(nums) // 2  # 뽑아야 하는 폰켓몬 수

    nums.sort()
    p = set()
    
    for i in nums:
        p.add(i)
        if (len(p) == pick_num):
            break

    return len(p)

풀이

  • 정렬 → for문으로 하나씩 set()에 넣어준다 → set()이기 때문에 자동으로 중복제거가 되면서 들어감
  • for문 중간에 만약 뽑아야 하는 폰켓몬 수를 다 채웠으면 → 탈출 → 정답 리턴
  • for문을 끝까지 돌았는데도 못채웠으면 → 그만큼 뽑아야 하는 수에 비해 종류가 적은 것, 어쨋든 set()에는 겹치지 않는 종류의 폰켓몬이 다 들어가있음 → 정답 리턴

What I learned

완전 심플한 코드…

def solution(ls):
    return min(len(ls)/2, len(set(ls)))

결국에는 for문으로 안돌고 몽땅 집어넣어서 중복 제거하면 → 알아서 겹치지 않는 종류들이 들어가있음 → 그러나 뽑아야하는 수보다 많이 들어가있으면 X → min()으로 그걸 판별

profile
데굴데굴 뚝딱뚝딱 개발기록
post-custom-banner

1개의 댓글

comment-user-thumbnail
2023년 7월 17일

정보가 많아서 도움이 많이 됐습니다.

답글 달기