Programmers / [복습] 의상 - 해시 / Python 파이썬

2025. 4. 3. 16:06·coding test - python/Programmers
728x90
반응형

 

*문제 출처는 프로그래머스에 있습니다.

문제 제목: 의상 - 해시

문제 사이트: https://school.programmers.co.kr/learn/courses/30/lessons/42578

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr


나의 풀이

 

1) HashMap 만들기

  • HashMap이란 Key-Value의 Pair를 관리하는 Dictionary이다.
  • 이 문제에서 Key는 옷의 종류가 되고, Value는 해당 옷 종류의 가짓수(count)를 의미한다.

2) clothes 배열에 존재하는 모든 옷의 종류의 count table 만들기

  • 'Hashing을 한다'라고도 표현하는데, HashMap에 의상 종류를 전부 추가해보자. 
  • 위 코드의 동작 방식은 다음 예시로 설명하는 것이 가장 쉽게 이해가 가능할 것이다.

 

 

  • Hash Map을 보고 나면 별게 아니다. 이 문제에서는 Key 값으로 전화번호를 관리하는 전화번호부 같은 것이다.
  • HashMap.get(type, 0)
    • 이 함수는 'B'라는 Key에 해당하는 Value가 있으면 가져오고, 아닐 경우 0을 Default로 지정하여 사용하겠다는 의미의 함수이다.
    • Value는 곧 옷 종류의 가짓수가 되기 때문에, 이전에 값이 있었으면 기존 값에 + 1을 하면 되고
    • 없었으면 1을 입력하면 된다.

3) 각 옷 종류별 경우의 수를 answer에 곱해준다

  • 이제 모든 옷 종류의 count가 잘 입력되었다면, answer에 곱해주면 된다.
  • 하지만 모든 옷 종류에 대해서 안 입는 경우가 있기 때문에 ans *= it.next().intValue()라고 하지 않고
  • ans *= it.next().intValue() + 1을 곱해줘야 한다.
  • 즉, +1은 각 옷 종류를 입지 않는 경우를 고려하기 위해 추가되어야 하는 것이다.

4) 예외처리

  • 아무리 스파이가 모자 하나만 달랑 입어도 된다고 해도, 아무것도 입지 않는 것은 허용되지 않는 것이 문제의 전제이다.
  • 그렇기 때문에 마지막에 -1을 해줘서 모든 옷의 종류를 입지 않은 경우 1개를 제외시켜 주고,
  • 예제 #2에서도 동일하게 잘 동작하는 걸 확인하면 제출해보고 정답임을 확인할 수 있다

출처: https://coding-grandpa.tistory.com/88 [개발자로 취직하기:티스토리]

def solution(clothes):
    answer = 0
    hash_map = {j:[] for i,j in clothes}
    for item,category in clothes:
        hash_map[category].append(item)
        
    answer = 1# 아무것도 입지 않은 경우
    for h in hash_map:
        answer *= len(hash_map[h]) + 1 # (1은 안입는경우)
        
    return answer -1

 

 

 


※ 알아야 할 것

- 아무것도 입지 않은 경우도 경우라고 생각한다. 하지만 문제 조건에서 벗으라는건 없으니 마지막에 1을 빼줌

 

728x90
반응형

'coding test - python > Programmers' 카테고리의 다른 글

Programmers / [복습] 전화번호 목록 - 해시 / Python 파이썬  (0) 2025.04.03
Programmers / [복습] H-index - 정렬 / Python 파이썬  (0) 2025.04.02
Programmers / 정수를 나선형으로 배치하기 - bfs, 달팽이 / Python 파이썬  (1) 2025.04.01
Programmers / [복습] 할인 행사 - 슬라이딩윈도우 / Python 파이썬  (1) 2025.03.30
Programmers / [복습] 피로도 - 순열 , 그리디 / Python 파이썬  (0) 2025.03.30
'coding test - python/Programmers' 카테고리의 다른 글
  • Programmers / [복습] 전화번호 목록 - 해시 / Python 파이썬
  • Programmers / [복습] H-index - 정렬 / Python 파이썬
  • Programmers / 정수를 나선형으로 배치하기 - bfs, 달팽이 / Python 파이썬
  • Programmers / [복습] 할인 행사 - 슬라이딩윈도우 / Python 파이썬
sillon
sillon
꾸준해지려고 합니다..
    반응형
  • sillon
    sillon coding
    sillon
  • 전체
    오늘
    어제
    • menu (614)
      • notice (2)
      • python (68)
        • 자료구조 & 알고리즘 (23)
        • 라이브러리 (19)
        • 기초 (8)
        • 자동화 (14)
        • 보안 (1)
      • coding test - python (301)
        • Programmers (166)
        • 백준 (76)
        • Code Tree (22)
        • 기본기 문제 (37)
      • coding test - C++ (5)
        • Programmers (4)
        • 백준 (1)
        • 기본기문제 (0)
      • 공부정리 (5)
        • 신호처리 시스템 (0)
        • Deep learnig & Machine lear.. (41)
        • Data Science (18)
        • Computer Vision (17)
        • NLP (40)
        • Dacon (2)
        • 모두를 위한 딥러닝 (강의 정리) (4)
        • 모두의 딥러닝 (교재 정리) (9)
        • 통계 (2)
      • HCI (23)
        • Haptics (7)
        • Graphics (11)
        • Arduino (4)
      • Project (21)
        • Web Project (1)
        • App Project (1)
        • Paper Project (1)
        • 캡스톤디자인2 (17)
        • etc (1)
      • OS (10)
        • Ubuntu (9)
        • Rasberry pi (1)
      • App & Web (9)
        • Android (7)
        • javascript (2)
      • C++ (5)
        • 기초 (5)
      • Cloud & SERVER (8)
        • Git (2)
        • Docker (1)
        • DB (4)
      • Paper (7)
        • NLP Paper review (6)
      • 데이터 분석 (0)
        • GIS (0)
      • daily (2)
        • 대학원 준비 (0)
      • 영어공부 (6)
        • job interview (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Python
    programmers
    백준
    소수
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
sillon
Programmers / [복습] 의상 - 해시 / Python 파이썬
상단으로

티스토리툴바