본문 바로가기

Algorithm & Data Structure

백준 - 9375번

728x90
반응형
import itertools
import sys
from functools import reduce
from itertools import permutations
n = int(sys.stdin.readline())

def multiply(arr):
    return reduce(lambda x, y: x * y, arr)

sol =[]
for i in range(n):
    c = int(sys.stdin.readline())
    if c > 0:
        case = []
        for k in range(c):
            case.append(str(sys.stdin.readline()))

        temp = []
        for k in range(len(case)):
            temp.append((case[k].split())[1])

        temp.sort()

        k = 0
        f = temp[0]
        ans = []
        cnt = 0
        while k != len(temp):
            if f == temp[k]:
                cnt = cnt + 1
                k = k + 1
                if k == len(temp):
                    ans.append(cnt)
                    cnt = 0

            elif f != temp[k]:
                f = temp[k]
                ans.append(cnt)
                cnt = 0
###############맞음############
        if len(ans) == 1:
            r_ans = ans[0]
            sol.append(r_ans)
        else:
            r_ans = 0
            r = 1
            c = []
            for i in range(2,len(ans)+1):
                c = list(itertools.combinations(ans,i))
                for y in range(len(c)):
                    r_ans = r_ans + multiply(c[y])
            r_ans = sum(ans) + r_ans
            sol.append(r_ans)


    elif c == 0:
        sol.append(0)

for i in sol:
    print(i)

시간초과 코드

 

from sys import stdin
T = int(input())
for _ in range(T):
    n = int(input())
    lst = {}
    ans = 1
    for i in range(n):
        name, part = input().split()
        if part in lst:
            lst[part] += 1
        else:
            lst[part] = 1
    for p in lst:
        ans *= lst[p] + 1
    ans -= 1
    print(ans)

성공 코드

728x90
반응형

'Algorithm & Data Structure' 카테고리의 다른 글

백준 - 4949번(스택, 전체탐색)  (0) 2022.01.29
백준 - 15954번(정수론, 전체탐색)  (0) 2022.01.28
백준 - 2981번  (0) 2022.01.25
백준 - 13305(그리디 알고리즘)  (0) 2022.01.25
백준 - 1931번  (0) 2022.01.24