데이터사이언스 기록기📚

[프로그래머스] Level 1_폰켓몬 본문

Coding Test/프로그래머스(Python)

[프로그래머스] Level 1_폰켓몬

syunze 2022. 7. 17. 15:15

문제 유형

해시

 

문제

https://school.programmers.co.kr/learn/courses/30/lessons/1845

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

나의 문제풀이

 - 시도(실패) : combinations를 이용하여 list 구성 -> 찾는데 정보 오래걸림

 - 시도(성공)

  • 처음부터 중복을 제거하고 시작해보자!
  • set을 이용하여 중복 제거
  • len(nums) // 2보다 작으면 len(num_set) 리턴, 이외의 경우 len(nums) // 2 리턴
def solution(nums):
    answer = 0
    num_set = list(set(nums))
    
    if len(num_set) <= len(nums) // 2:
        return len(num_set)
    else:
        return len(nums) // 2

 

다른사람의 문제풀이

1. 한 줄로 줄여서 작성 - min 이용하여 한 번에 비교

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

 

2. for문 이용하여 중복 제거

def solution(nums):
    kind = []
    answer = int(len(nums)/2) # 3
    
    # 중복 제거하여 kind에 넣기
    for num in nums:
        if num not in kind:
            kind.append(num)
            
    # 더 작은 값 리턴
    result = len(kind) if answer > len(kind) else answer 
    return result

 

리뷰

- 해시 정의
https://yunaaaas.tistory.com/46

 

[Python 자료구조] Hash(해시)

파이썬에서 해시(Hash)는 어떻게 구현할 수 있을까요!? 파이썬에서는 Dictionary 라는 자료구조를 통해 해시를 제공합니다. 그리고 Dictionary는 dict클래스에 구현되어있습니다! 해시 언제 사용하면 좋

yunaaaas.tistory.com

- 조합보다 '중복 제거'에 초점을 맞추어서 해결하기

728x90
Comments