[Python] 프로그래머스 Level 2 의상

지애·2024년 6월 27일
1

코딩테스트

목록 보기
9/12

point
경우의 수, collection.Counter

생각의 흐름

  • 의상 조합의 개수를 구하는 것이므로 경우의 수를 구하는 공식을 쓰면 쉽겠다고 생각했다.
  • 같은 이름을 가지는 의상은 없으므로, 종류별 의상의 개수 만을 파악하면 될 것이라고 생각했고 이때 지난 번에 배운 Counter함수를 사용했다.
  • 해당 종류를 아예 선택하지 않을 경우를 고려하여 종류별 의상의 개수에 1을 더한 값들을 모두 곱해주었고, 마지막으로 의상을 하나도 입지 않게 될 경우를 고려하여 마지막 계산 결과에서 1을 뺐다.

첫 번째 풀이

import collections

def solution(clothes):
    types = [x[1] for x in clothes]
    types_num = collections.Counter(types)
    clothes_num = 1
    for t in types_num.keys():
        clothes_num *= types_num[t]+1
    answer = clothes_num - 1
    return answer
  • clothes_num *= types_num[t]+1 부분에서 덧셈 부분에 괄호를 넣어주지 않아 계산 결과가 올바르게 나오지 않았다.

두 번째 풀이

import collections

def solution(clothes):
    
    types = [x[1] for x in clothes]
    types_num = collections.Counter(types)
    
    answer = 1
    for t in types_num:
        answer *= (types_num[t]+1)
    
    
    return answer -1
  • 그래서 괄호를 넣어주었는데 또 틀렸다고 뜬다...

최종 풀이

import collections

def solution(clothes):
    
    types = [x[1] for x in clothes]
    types_num = collections.Counter(types)
    
    answer = 1
    for t in types_num:
        answer =  answer * (types_num[t] + 1)
    
    
    return answer -1
  • 혹시 몰라 할당 연산자를 기본 연산으로 바꾸었더니, 그제서야 정답으로 떴다. 둘의 차이가...뭘까??

회고

  • 아이디어도 빠르게 떠올리고 코드 작성도 거의 올바르게 마쳤는데, 할당 연산자 부분에서 시간을 많이 뺏겼다. 왜 틀렸는지 모르겠다.
profile
차근차근

0개의 댓글