본문 바로가기

코딩

프로그래머스 - 코딩테스트 고득점 Kit - 해시 - 위장 (python)

728x90

일단 문제는 아래 링크를 보시면 됩니다~

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

 

dictionary에 대한 설명은 아래 링크를 참고하시면 됩니다~

https://wikidocs.net/16

 

코드 및 알고리즘 순서는 아래 코드의 주석을 자세히 보시면 됩니다.

def solution(clothes):
    answer = 1
    data=dict()
    # 1. dictionary를 이용하여 종류별로 정리 
    # 종류: {옷1, 옷2} 이런 느낌
    for i in clothes:
        try:
            data[i[1]].append(i[0])
        except KeyError:
            data[i[1]]= [i[0]]
            
    # 2. key_num에 종류들 리스트 저장
    key_num=list(data.keys())
    
    # 2-1. 종류가 하나라면 answer에 모든 옷 수 저장
    if len(key_num)==1:
        answer=len(data[key_num[0]])
    
    # 2-2. 종류가 여러 개라면 answer에 ((종류1+1)*(종류2+1)*...*(종류n+1))-1 저장 
    else:
        for i in key_num:
            answer=answer*(len(data[i])+1)
        answer=answer-1
    return answer

2-2에 대해 첨언을 하자면 "스파이는 하루에 최소 한 개의 의상은 입습니다." 라는 조건으로 인해 위와 같은 식을 짜게 되었고 1을 뺀 이유는 제시된 옷 종류 중 아무것도 안 입는 경우를 빼야하기 때문입니다.