저고데

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

프로그래머스

[프로그래머스]위장

진철 2023. 1. 18. 21:10
728x90
반응형

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

본 문제를 요약하자면 다음과 같다.

옷의 이름과 종류가 담긴 clothes 배열이 주어진다.

최소한 하나는 입어야하며, 같은 종류의 옷은 1개까지 입을 수 있을 때, 입을 수 있는 모든 경우의 수를 반환해야한다.

 

코드를 작성하기 위한 순서는 다음과 같다.

1. 옷의 종류가 어떤 것이 있는지 알아내기 위해 따로 분리하여 배열을 하나 만든다.

2. 각 종류의 옷의 갯수는 몇 개인지 count를 사용하여 알아낸 수 이 역시 따로 분리하여 배열을 하나 만들어준다.

3. 예를 들어 1, 2번을 거쳐서 종류=[바지, 상의], 갯수=[2개, 1개]로 알아냈다면, 착용할 수 있는 경우의 수는 (2+1)*(1+1)가 된다. +1을 해주는 이유는 입지 않는 경우를 포함해야하기 때문이다.

4. 하지만 이 경우의 수는 모두 안입는 경우가 포함이 되어있다. 최소 1개는 입어야하기 때문에 -1를 해주면 정답이 된다.

def solution(clothes):
    answer = 1
    kind=[]
    count=[]
    for i in clothes:
        kind.append(i[1]) #1번
    for i in set(kind):
        count.append(kind.count(i)) #2번
    for i in count:
        answer*=i+1 #3번
        
    return answer-1 #4번
728x90
반응형