반응형
programmers.co.kr/learn/courses/30/lessons/42578
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)
반응형
'Algorithm > 프로그래머스' 카테고리의 다른 글
[프로그래머스/Python] K번째수 - Level1 (0) | 2021.05.09 |
---|---|
[프로그래머스/Python] 실패율 (0) | 2021.05.08 |
[프로그래머스/Python] 베스트앨범 - Level3 (0) | 2021.05.05 |
[프로그래머스/Python] 전화번호 목록 - Level2 (0) | 2021.05.02 |
[프로그래머스/Python] 완주하지 못한 선수 - Level1 (0) | 2021.05.02 |