알고리즘 [위장]

권윤경·2021년 12월 28일
0

알고리즘

목록 보기
13/13
post-thumbnail

프로그래머스_위장

def solution(clothes):
	answer = 1
    closet = {} #dictionary 선언
    
    for cloth in clothes:
    	#dictionary에 key가 존재하면, 해당 key에 value 추가
    	if cloth[1] in closet.keys(): 
        	closet[cloth[1]].append(cloth[0])
            
        #dictionary에 key가 존재하지 않는다면, dictionary 추가
        else:
        	closet[cloth[1]] = [cloth[0]]
            
    for value in closet.values():
    	answer *= len(value) + 1
        
return answer - 1

문제 해결 포인트가 해시였지만, 어떻게 풀어야 할지 몰라 다른 사람의 문제 풀이를 참고하여 해결하였다.

먼저 매개변수로 입력 받은 clothes 문자열을 순회하며, closet에 같은 옷 종류의 옷끼리 묶어 정리한다. closet에 옷 종류가 있다면 append로 값을 추가하고, closet에 옷 종류가 없다면 리스트를 추가하는 방식으로!

다음으로 정리된 closet을 가지고 경우의 수를 구하면된다.
경우의 수는 종유별로 옷을 0개 혹은 1개 입는다. 각 종류별로 입을 수 있는 옷의 개수에 안입는 경우 1을 더하여 그 값들을 모두 곱하면 값을 구할 수 있다.

이때 아무것도 안입으면 안되므로 아무것도 안입는 경우 1을 빼면 문제의 정답을 구할 수 있다.

참고 : https://latte-is-horse.tistory.com/140

0개의 댓글