티스토리 뷰

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

 

9375번: 패션왕 신해빈

첫 번째 테스트 케이스는 headgear에 해당하는 의상이 hat, turban이며 eyewear에 해당하는 의상이 sunglasses이므로   (hat), (turban), (sunglasses), (hat,sunglasses), (turban,sunglasses)로 총 5가지 이다.

www.acmicpc.net

 

 

 

 

 

 

👩‍💻문제 이해

예시 입력에 나온 

hat headgear
sunglasses eyewear
turban headgear

이 세 가지의 의상으로 나올 수 있는 경우의 수를 생각해보면

 

 (hat), (turban), (sunglasses), (hat,sunglasses), (turban,sunglasses)로 총 5가지 이다.

 

headgear : 2가지, eyewear : 1가지이므로 

 

같은 종류의 의상은 1개만 입을 수 있기 때문에 전체 경우의 수는 (2+1) * (1+1) = 6가지 이다.

 

하지만 알몸인 경우는 빼주어야 하기 때문에 -1를 해주면 총 5가지가 된다.

 

 

 

 

👩‍💻색깔과 모양이 다른 경우의 수 사용 + dictionary  : 성공🌈

n = int(input())

for i in range(n):
  res = 1
  num = int(input())
  dic = {}
  for i in range(num):
    thing, sort = input().split() 
    if sort in list(dic.keys()) :
      count = dic[sort]
      count += 1
      dic[sort] = count
    else :
      count = 1
      dic[sort] = count
  jli =[]
  for i,j in dic.items():
    jli.append(j)

  for i in range(len(jli)):
    res *= (jli[i] + 1)
  print(res-1)

 

 

n = int(input())
# 테스트 케이스 입력 받기

for i in range(n):
  res = 1
  num = int(input())
  # 의상 수 입력받기
  
  dic = {}
  for i in range(num):
    thing, sort = input().split() 
    # 의상 이름과 의상 종류 입력받기
    
    if sort in list(dic.keys()) :
      count = dic[sort]
      count += 1
      dic[sort] = count
      # dic -> { 의상 종류 : 개수 }
    else :
      count = 1
      dic[sort] = count
      
  jli =[]
  # jli : 개수만 뽑은 list
  for i,j in dic.items():
    jli.append(j)

  for i in range(len(jli)):
    res *= (jli[i] + 1)    
  # 색깔과 모양이 서로 다른 도형을 뽑는 경우의 수 사용 
  
  print(res-1)
  # 알몸 경우 빼주기

 

 

 

🚀결과🚀

 

 

 

 

 

Point

색깔과 종류가 모두 다른 도형을 뽑는 경우의 수 
(단, 같은 도형의 종류는 한 가지만 뽑을 수 있다.)

ex) 🔴, 🔵, 🟡, 🔺, 🟦, 🟩
-> (3+1) * (1+1) * (2+1) -1 = 23가지
댓글
최근에 올라온 글
«   2024/09   »
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
Total
Today
Yesterday