[python] 백준 9375번 패션왕 신해빈

Youngseo Lee·2024년 8월 15일

자료구조

목록 보기
1/7

백준 9375번 패션왕 신해빈

https://www.acmicpc.net/problem/9375

문제

풀이

그냥 구글링해서 힌트를 봐버렸다.
처음 내 아이디어는 조합을 이용해서, 1부터 타입 개수만큼, 조합을 더하는 방법이었다.
근데 그랬더니 너무너무 복잡해지고 계산이 안되기 시작해서 찾아봤더니

(a 옷 종류 수 + 1) (b 옷 종류 수 + 1) (c 옷 종류 수 + 1) ... - 1 (알몸인 상태 제거)

이렇게 간단할 수가. 나는 왜 더하기 일을 생각하지 못했을까. 그 종류의 의상을 착용하지 않을 경우가 포함되어 있기에 +1 을 해줘야하는 것이다.

t = int(input())

for _ in range(t):
    data = []
    n = int(input())
    for _ in range(n):
        data.append(list(map(str, input().split())))

    clothes_type = {} # {'headgear': 3, 'eyewear': 2}
    for i in data:
        if i[1] in clothes_type:
            clothes_type[i[1]] +=  1
        else:
            # 입거나 안입거나 2가지 경우의 수
            clothes_type[i[1]] =  2

    answer = 1
    for i in clothes_type:
        answer *= clothes_type[i]
    # 알몸인 상태 제거 
    answer -= 1
    print(answer)
    

📌 주의

  • 착용하지 않는 경우를 + 1 로 표현할 수 있다.
  • 지금 보니 answer 를 1로 뒀는데, 혹시 옷이 아예
    주어지지 않으면 0 으로 출력하게끔 코드에 추가해줘야 할 것 같다. 근데 저렇게 풀어도 백준에 에러는 뜨지 않았다. (추후에 뜰지도)
profile
leenthepotato

0개의 댓글