택시짱의 개발 노트

[프로그래머스] 위장 본문

알고리즘

[프로그래머스] 위장

택시짱 2020. 5. 22. 14:27

링크

https://programmers.co.kr/learn/courses/30/lessons/42578

 

코딩테스트 연습 - 위장

 

programmers.co.kr

풀이

 

스파이가 가진 의상들이 담긴 2차원 배열 clothes가 주어질 때 서로 다른 옷의 조합의 수를 구하는 문제이다.

 

스파이들은 하나 이상의 옷을 입으면 된다.

 

한 종류의 옷만 있을때는 옷을 하루에 한개씩 입으면 되기 때문에 옷의 갯수가 답이 되고,

 

여러 종류의 옷이 있을때는 A옷을 입고 B는 안입고, A 안입고 B입고, A입고 B입고 이런 방법이 있을수 있기 때문에

A와 B옷의 종류가 각각 2, 3벌씩 있다면 여기에 각각 옷을 안 입는 경우를 추가해준다 그러면 3, 4벌씩 있다고 할수 있고 그러면 3*4를 하면 12가지 방법이 나오게 된다. 그러나 여기서 둘다 안입는 경우를 빼주게 되면

12 - 1 = 11 즉 11가지의 방법이 나오게 된다.

 

import sys
from collections import deque, Counter
from queue import PriorityQueue
from itertools import permutations,combinations,product
sys.setrecursionlimit(10000)

def solution(clothes):
    clothe = {}

    for name,what in clothes:
        if what in clothe.keys():
            clothe[what] += 1
        else:
            clothe[what] = 1

    answer = 1
    for value in clothe.values():
        if len(clothe) == 1:
            return value
        
        else:
            answer *= (value+1)
    return answer - 1
반응형
Comments