본문 바로가기
Algorithm/해시

[프로그래머스 lv 2] 의상

by HANNI하니 2023. 12. 4.

사용 언어 - Python3

문제 - 의상

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

 

프로그래머스

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

programmers.co.kr

 

정답

hash 사용하기

1. 옷을 종류별로 구분하기

hasp_map[얼굴] = 얼굴에 쓰는 옷 종류 개수

type에 해당하는 옷이 없다면 +1 / 있다면 지금까지의 count + 1

hash_map.get(type,0) + 1

 

2. 모든 조합 계산하기

상의 2개에 하의 1개이면, 상의만 입거나 하의만 입을 수도 있으므로

가능한 경우 수 = 상의 3개*하의2개 -1(아무것도 안입은 경우)

answer *= (hash_map[type] + 1)

answer - 1

 

def solution(clothes):
    # 1. 옷을 종류별로 구분하기
    hash_map = {}
    for clothe, type in clothes:
        hash_map[type] = hash_map.get(type, 0) + 1
        # 같은 종류의 옷이 있다면, type(같은 종류의 개수) + 1
        # 같은 종류의 옷이 없다면, 0 + 1
        
    # 2. 입지 않는 경우를 추가하여 모든 조합 계산하기
    answer = 1
    for type in hash_map:   
        answer *= (hash_map[type] + 1)
        # (옷종류1+1) * (옷종류2+1) ....
    
    # 3. 아무종류의 옷도 입지 않는 경우 제외하기
    return answer - 1

 

 

 

 

레퍼런스

 

https://coding-grandpa.tistory.com/88

 

[프로그래머스] 위장 (해시 Lv. 2) - 파이썬 Python

0. 동일 유형 문제 [프로그래머스] 완주하지 못한 선수 (해시 Lv. 1) [프로그래머스] 전화번호 목록 (해시 Lv. 2) [프로그래머스] 위장 (해시 Lv. 2) [프로그래머스] 베스트 앨범 (해시 Lv. 3) 1. 문제 설명

coding-grandpa.tistory.com

정답 깃허브

 

 

 

댓글