Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

행복한 개구리

백준 22.03.21. 9375번 - 패션왕 신해빈 본문

Algorithm/BaekJoon

백준 22.03.21. 9375번 - 패션왕 신해빈

HappyFrog 2022. 3. 21. 16:21

T = int(input())
items = {}
for i in range(T):
    nums = int(input())
    for j in range(nums):
        name, category = map(str, input().split())
        val = []
        if category in items.keys():
            items[category].append(name)
        else:
            items[category] = [name]
    result = 1
    for k in items:
        v = items[k]
        result *= len(v)+1
    print(int(result)-1)
    items.clear()
  • factorial을 이용한 조합으로 풀어보려했으나 오답처리가 되어 다시 작성했습니다.
  • dictionary를 사용한 코드입니다.
  • 입력받은 옷의 카테고리 key로 지정하여 이름을 알맞게 value로서 할당해줍니다.
  • 결괏값은 알몸은 아니어야하기 때문에 1로 할당해두었습니다.
    • 카테고리 headgear의 옷의 개수가 2, eyewear의 옷의 개수는 1이라고 가정을 한다면
    • headgear의 옷을 입을수도, 벗을수도 있으며 eyewear또한 마찬가지입니다.
    • 따라서 headgear의 경우의 수는 2+1(벗은 상태)가 됩니다. eyewear도 마찬가지입니다.
    • 이것들의 경우의 수는 (headgear의 옷의 개수) * (eyewear의 옷의 개수)가 됩니다.
    • 하지만 알몸은 허용되지 않으니 -1을 하여 모두 벗은 경우의 수를 제외해줍니다.
  • 경우의 수를 모두 구한 뒤 1을 빼서 출력하면 됩니다.
  • 마지막으로 딕셔너리를 clear()하여 초기화해줍니다.
    • 이 다음 반복문에서 다시 사용해야하기 때문입니다.