Algorithm/프로그래머스

[프로그래머스/Python] 위장 - Level2

poppy 2021. 5. 4. 12:55
반응형

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

 

코딩테스트 연습 - 위장

 

programmers.co.kr

def solution(clothes):
    answer = 1
    cloth = {}
    
    # 딕셔너리에 옷 종류별 옷 개수 저장
    for i in clothes:
        if i[1] in cloth: cloth[i[1]] += 1
        else: cloth[i[1]] = 1
        
    # 의상의 조합 개수 계산
    for value in cloth.values():
        answer *= (value+1)
        
    return answer-1

먼저 옷 종류별로 옷이 몇 개가 있는지 파악하기 위해서 딕셔너리를 사용하여 종류별 옷 개수를 저장합니다. cloth에 이미 해당 옷 종류(key)가 있다면 값(value)을 1을 더한 값으로 변경해주고 그렇지 않다면 해당 옷 종류(key)에 값(value)인 1을 저장합니다.

 

옷 종류별 옷 개수 파악이 끝났다면 의상의 조합 개수를 계산합니다. 프로그래머스의 예시를 보며 의상의 조합 개수를 어떻게 파악하는지 살펴보겠습니다.

 

clothes return
[["yellowhat", "headgear"], ["bluesunglasses", "eyewear"], ["green_turban", "headgear"]] 5

 

예시를 보면 옷 종류는 총 2종류이고, headgear는 2개, eyewear는 1개가 됩니다. 따라서 코드에서 cloth = { 'headgear' : 2, 'eyewear' : 1 }  가 됩니다. 의상은 하루에 최소 한 개를 입어야 하므로 의상 조합의 개수 = 전체 의상 조합 경우 - 아무것도 입지 않은 경우 가 됩니다. 따라서 의상 조합의 개수(return) = (3 * 2) - 1 = 5가 됩니다. 코드를 보면 for문을 돌면서 전체 의상 조합 경우의 수를 계산한 후 마지막에 리턴할 때 아무것도 입지 않은 경우를 빼줍니다. headgear의 경우를 보면 옷은 2개이지만 아무것도 입지 않은 경우도 있기 때문에 value + 1 을 해주는 것입니다.


딕셔너리

딕셔너리를 해시와 같다고 생각하면 됩니다. 따라서 딕셔너리는 key와 value로 이루어져 있습니다.

다음 예시를 보면 딕셔너리를 이해하는데 도움이 될 것입니다.

user = {'name' : 'poppy', 'age' : '20', 'address' : 'seoul'} // 딕셔너리 저장
print(user) // 전체 딕셔너리 출력
print(user.keys()) // 딕셔너리의 키만 출력
print(user.values()) // 딕셔너리의 값만 출력
print(user['name']) // 키를 통한 값 출력
user['birth'] = '210504' // 값 추가
print(user) 

// for문을 이용하여 키와 값 출력
for k,v in user.items():
  print("키: " + k + " 값: " + v)

 

반응형