반응형
풀이
옷의 종류를 key로 하고 해당 종류에 몇 가지 의상이 있는지를 담아주는 사전을 하나 만든다. 그 후 종류별로 갖고 있는 의상의 개수에 +1을 해주어 서로 곱해주어 조합할 수 있는 경우의 수를 구해주면 된다. +1은 해당 종류의 의상을 입지 않았을 때를 의미한다.
이렇게 구한 값에 -1을 해주어 리턴하면 되는데 이는 모든 종류의 의상을 입지 않았을 때의 경우의 수를 제거해주는 것이다.
코드
[Swift]
import Foundation
func solution(_ clothes:[[String]]) -> Int {
var clothesDict: [String: Int] = [:] // 의상의 종류를 key로 하는 dictionary
var answer: Int = 1
// 입력으로 받은 의상들을 dictionary에 담아준다.
for c in clothes {
let kinds: String = c[1]
if let value = clothesDict[kinds] {
clothesDict[kinds] = value + 1
} else {
clothesDict[kinds] = 1
}
}
// dictionary에 담겨 있는 의상들에 +1을 하고 곱하여 경우의 수를 구해준다.
for value in clothesDict.values {
answer *= (value + 1)
}
// 모든 의상을 입지 않았을 때를 제거해주고 리턴해준다.
return answer - 1
}
[Python]
from collections import defaultdict
def solution(clothes):
answer = 1
# 의상의 종류를 key로 하는 dictionary
clothesDict = defaultdict(int)
# 입력으로 받은 의상들을 dictionary에 담아준다.
for (_, kinds) in clothes:
clothesDict[kinds] += 1
# dictionary에 담겨 있는 의상들에 +1을 하고 곱하여 경우의 수를 구해준다.
for i in clothesDict.values():
answer *= (i + 1)
# 모든 의상을 입지 않았을 때를 제거해주고 리턴해준다.
return answer - 1
반응형
'Algorithm > Programmers' 카테고리의 다른 글
[고득점 Kit(힙)] 더 맵게 (Python) (0) | 2022.01.27 |
---|---|
[고득점 Kit(해시)] 베스트앨범 (Swift, Python) (0) | 2022.01.26 |
[고득점 Kit(해시)] 전화번호 목록 (Python) (0) | 2022.01.22 |
[고득점 Kit(해시)] 완주하지 못한 선수 (Python) (0) | 2022.01.20 |
[고득점 Kit(스택/큐)] 주식가격 (Python) (0) | 2022.01.19 |
댓글