본문 바로가기
Algorithm/Programmers

[Programmers / Level2] 의상

by 개복취 2024. 1. 29.

코딩테스트 연습 - 의상 | 프로그래머스 스쿨

 

프로그래머스

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

programmers.co.kr


< 코드>

def solution(clothes):
    cloth = {}
    for stuff, wear in clothes:
        if wear in cloth: cloth[wear] += 1
        else: cloth[wear] = 1
    
    result = 1
    for count in cloth.values():
        result *= (count + 1)
    
    return result - 1

 

해시를 이용한 조합문제이다. 조합을 구하는 센스가 필요했다. Counter 클래스 또는 for문을 통해 일단 딕셔너리에 넣어준다.

문제를 풀면서 처음 알게된 사실인데 밸류로 리스트를 넣는방법이 있을까 해서 아래와 같이 알아봤다

 

<입력받은 값을 리스트로 만들어 딕셔너리에 할당하는 방법>

my_dict[key] = [value]

 

처음 받아온 k-v값으로 선언해준다음 my_dict[key].append(other_value) 로 밸류값에 리스트를 넣을수가 있었다

 

문제는 조합하는 부분이였는데..

각 가짓수 + 1(선택하지 않는 경우)을 모두 곱한값을 리턴하고 마지막에 모두 입지않는 경우는 없다고 하므로 -1 가짓수를 빼주면 된다.