문제


이해

이 문제에는 옷의 종류와 옷의 이름이라는 2개의 요소로 이루어진 array들의 array(2차원 array)로 이루어져 있다.

서로 다른 옷의 조합의 수를 구해야 하는데, 우선 각 옷의 종류별 unique한 옷의 이름의 수를 구해야 한다. 해당 종류의 옷을 안입는 선택지도 가능하기 때문에, 각 종류별 unique한 옷 이름의 수에 1을 더한 후, 그 수들을 모두 곱해주면 가능한 전체 선택지의 수를 구할 수 있다.

하지만 직전에 입은 스타일과는 다르게 입어야 하므로, 최종적으로 그 수에 1을 빼주어 정답을 구할 수 있다.

이 문제는 dictionary의 get 메써드와 list comprehension을 적절히 사용할 줄 알면 간단하게 풀 수 있는 쉬운 문제다. 파이썬을 처음 접하는 분들이 꼭 직접 풀어보시면 좋을 것 같다.


풀이

def solution(clothes):
    d = {}
    for [x,y] in clothes:
        d[y] = d.get(y,0)+1
    vlist = [v+1 for k,v in d.items()]
    mul = 1
    for v in vlist:
        mul *= v
    answer = mul-1
    return answer


Reference

https://nordic.icpc.io/