[프로그래머스] 폰켓몬(Hash) 문제 풀이(Python)

yellong·2025년 3월 16일
0

Algorithm

목록 보기
12/14

내가 푼 문제 풀이

# programmers hash 1
def solution(nums):
    # answer 초기화
    answer = 0
    # dictionary type(Hash) 선언
    type_dict = dict()
    
    # nums loop
    for i in nums:
        # 번호 중복 체크
        if i in type_dict :
            type_dict[i] += 1
        else :
            # num_list에 번호 추가하기
            type_dict[i] = 1
            answer += 1

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

문제 풀이 방향(개선점)

  1. dict 사용 대신 set() 사용
    중복되는 번호를 체크하기 위해서 type_dict라는 dict()를 사용했다.
    그리고 중복이 될 때마다 value에 1씩 더해주면서 중복되었음을 활용했다.
    하지만, 만약 set()함수를 썼다면 이와 같은 연산이 불필요했을 것이다.
  1. if/else 대신 min()의 사용
    type_dict의 key의 개수와 len(nums)/2 중 작은 값을 사용했으면 더 유용했을 것이다.

set 함수의 특징

  1. 순서가 없다(인덱스로 접근 불가)
  2. 중복은 허용되지 않는다.
  3. 요소는 변경 불가능한 자료형만 사용할 수 있다.

참고자료: ctkim.tistory

0개의 댓글

관련 채용 정보