[프로그래머스] LV2. 의상 - 파이썬

곌로그·2023년 10월 20일
0

[python]코딩테스트

목록 보기
28/34
post-thumbnail

문제 링크


문제 요약

해시 문제 유형에 해당한다.

코니는 매일 다른 옷 조합을 착용하는데 각 의상 종류별로 한 가지만 착용할 수 있음. (ex. 두 개의 안경을 동시에 착용할 수 없음) 코니는 적어도 하루에 한 가지 의상은 착용하고 착용한 의상의 일부만 다르더라도 다른 조합으로 간주.
주어진 2차원 배열 clothes는 코니가 가진 의상과 그 의상의 종류를 나타내고 목표는 가능한 서로 다른 옷 조합의 수를 반환하는 것


문제 풀이

def solution(clothes):

    clothing = dict()
    for c in clothes:
        item, key = c
        if key in clothing:
            clothing[key].append(item)
        else:
            clothing[key] = [item]
    # 딕셔너리 길이 = key 개수 

    with_items = 1
    for key, value in clothing.items():
        with_items *= (len(value)+1) # 아무것도 안 입는 경우 포함 
    return with_items-1 # 전부 안 입은 경우 제외 

    

📌 고려해야할 점

  • 약간 딕셔너리 사용해서 문제를 푸는 스킬이 필요하다기 보다는 ...! 경우의 수 문제에 가까운 것 같은 느낌
  • 주어지는 리스트에 대해서 의류의 종류를 key로 세부사항(?)을 value로 딕셔너리를 형성해준다!
  • 주어진 옷들에 대해서 해당 의류의 종류 (Ex. 상의, 하의, 겉옷 등)를 안 입을 수 있다는 것을 고려하기 위해 +1을 하여 경우의 수를 구해주고 최종적으로 전부 안 입었을 경우를 제외(-1) 해준다.
    약간 경우의 수 문제에서 전체 경우의 수에서 예외 하나 빼주는 적어도 유형 문제 느낌 ㅇㅇ

0개의 댓글