programmers- lv.2 (의상)

이예송·2023년 9월 4일

PS

목록 보기
90/97

문제링크: 의상

✍🏻 Information

content
언어python
난이도⭐️⭐️
풀이시간30분
제출횟수
인터넷검색유무yes




🍒 My Code

#from itertools import combinations
def solution(clothes):
    answer = 1
    cloth = {}
    for i in clothes:
        if i[1] not in cloth:
            cloth[i[1]] = 1
        else:
            cloth[i[1]] += 1
    for i in cloth.values():
        answer*=(i+1)
    """ 
    #처음에 풀이했던 나올 수 있는 조합 구해서 계산해주기 
    -> 1번 테케 시간초과 남
    for n in range(1,len(cloth)+1):
        l = list(combinations(cloth.values(),n))
        for i in l:
            tmp = 1
            for j in i:
                tmp*=j
            answer+=tmp
    """
    return answer-1




💡 What I learned

  • 조합 나올 수 있는 거 다 구해서 계산해줬는데 이걸 대체 어떻게 시간초과 안나게 할 수 있을까 했는데
    (의상종류+1)을 모두 곱한 후 -1(하나는 반드시 선택해야 하므로) 해주면 됐다.
    -> 의상종류가 3개면 각각의 부위에서 안입는것,첫번째,두번째,세번째 총 4개의 선택이 가능하고 부위별로 가능한 선택 수를 곱하면 모든 조합이 나오는데 최소 하나는 입어야 해서 1을 빼야한다
    -> 다만 이걸 검색했다가 우연히 어?! 이건가?! 하고 해봐서 알았다는점.. 스스로 100% 알아낸건 아니라는 점..
  • cnt = Counter([kind for name, kind in clothes])로 내가 딕셔너리 사용해서 구한것처럼 각 종류에 몇가지가 있는지 구할 수 있다.

0개의 댓글