Published:
Updated:

  • Reference
  • (해당 종류의 옷 개수 + 해당 종류를 안 입는 경우(1))를 곱해주고
    • 아무것도 안 입는 알몸의 경우 1을 뺴야 됨
  • 솔직히 지금의 나는 이 로직을 시험장에서 절대 못 떠올릴 것 같다 ㅠㅠ
    • Failed Solution으로 25%까지는 찍었는데 완벽하지가 않았다.


Solution

import collections
import sys
from typing import List


def solution(clothes: List[str]) -> int:
    answer = 1
    count_map = collections.defaultdict(int)

    for cloth in clothes:
        # 같은 이름을 가진 의상은 존재하지 않으니 [0]은 사용할 필요가 없음
        count_map[cloth.split()[1]] += 1

    # for k in count_map:
    #     if count_map[k] > 1:
    #         answer += count_map[k]
    #         continue
    #
    # if len(count_map) != 1:
    #     answer += len(clothes)

    for k in count_map:
        # count_map[k] 종류를 안 입을 수 있으니 그 경우를 +1
        answer *= count_map[k] + 1

    # 아무것도 안 입는 알몸인 경우를 -1
    return answer - 1


N = int(sys.stdin.readline().rstrip())
for _ in range(N):
    array = []
    n = int(sys.stdin.readline().rstrip())
    for _ in range(n):
        array.append(sys.stdin.readline().rstrip())

    print(solution(array))


Failed Solution

import collections
import sys
from typing import List


def solution(clothes: List[str]) -> int:
    answer = 0
    count_map = collections.defaultdict(int)

    for cloth in clothes:
        # 같은 이름을 가진 의상은 존재하지 않으니 [0]은 사용할 필요가 없음
        count_map[cloth.split()[1]] += 1

    for k in count_map:
        if count_map[k] > 1:
            answer += count_map[k]
            continue

    if len(count_map) != 1:
        answer += len(clothes)

    return answer


N = int(sys.stdin.readline().rstrip())
for _ in range(N):
    array = []
    n = int(sys.stdin.readline().rstrip())
    for _ in range(n):
        array.append(sys.stdin.readline().rstrip())

    print(solution(array))

Leave a comment