반응형

   문제

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


수학문제로 많이 풀어봤던 유형이다.

모든 경우에 수에서 조건을 충족하지 못하는 것을 빼서 답을 구하는 방식이다.

예를 들어 모자가 3개 바지가 2개 신발이 1개 있다고 생각햇을때

각각의 부위마다 고를수 있는 경우의 수는 입지않을 경우에 수를 더해 4개 3개 2개이다. 

이것을 모두 곱하고 모두 입지 않은 경우인 1개만 빼주면 된다.


n의 범위가 0부터 시작하는것에 주의하여 코드를 짜주어야한다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import sys
 
 
T=int(input())
while T>0:
    T-=1
    n=int(input())
    wear_dic=dict()
    if n==0:
        result = 1
    while n>0:
        n-=1
        w_name,w_type=map(str,sys.stdin.readline().split())
        if w_type in wear_dic.keys():#딕셔너리에 같은 종류의 의상이 있다면
            wear_dic[w_type]+=1
        else:
            wear_dic[w_type]=1
 
        result=1
        for i in wear_dic.keys():#입지 않았을때의 경우를 생각해 +1해서 곱해준다
            result*=wear_dic[i]+1
 
    print(result-1)#모두 입지않은경우를 빼준다
cs


반응형

'알고리즘(python) > 수학' 카테고리의 다른 글

[Python]수학3 백준 2004  (0) 2020.01.23
[Python]수학3 백준 1676  (0) 2020.01.22
[Python]수학3 백준 11051  (0) 2020.01.22
[Python]수학3 백준 11050  (0) 2020.01.21
[Python]수학3 백준 3036  (0) 2020.01.21
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기