개발/코딩테스트

[프로그래머스]위장 - 파이썬(Python)

grulsuitg 2022. 7. 3. 11:57

문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/42578

 

코딩테스트 연습 - 위장

 

programmers.co.kr


My Solution

from collections import defaultdict


def solution(clothes):
    answer = 1
    kinds = defaultdict(list)
    for cloth in clothes:
        kinds[cloth[1]].append(cloth[0])

    for kind in kinds:
        answer *= len(kinds[kind]) + 1
    return answer - 1

 

Key Idea

  • dictionary key : 옷의 종류, value : 옷의 이름을 저장하는 리스트
    → 옷의 이름이 중복이 없으므로 굳이 저장할 필요 X (문제 조건을 잘 읽자..)
    따라서 그냥 숫자를 저장해도 괜찮을 것 같습니다.
  • 모든 옷의 종류에 대해 (종류별 옷의 갯수 + 1) 를 곱한 후 -1을 해줍니다.
    종류별 옷의 갯수 + 1 : 안입는 경우 한가지를 추가
    -1을 하는 이유 : 위와 같이 식을 세우면 모두 안 입는 경우가 생기기 때문에 그 경우를 빼줍니다.