Notice
Recent Posts
Recent Comments
Link
슈프림 블로그
[프로그래머스] 해시 - 위장 (Swift 풀이) 본문
728x90
2020.08.30
어떻게 접근을 할까?
같은 이름의 옷은 없다고 했으므로 어떤 옷이 무슨 종류인지 보다, 옷의 종류별로 몇개의 옷이 있는지가 중요하다.
=> 반복문을 돌면서 [옷의 종류 : 종류별 개수] 형태의 딕셔너리에 저장하자.
한 종류의 옷은 0개 또는 1개만 착용 가능하고
한번에 옷의 종류별로 최대 1개씩만 착용 가능하므로 종류가 3종류라면 한번에 최대 3벌의 옷을 입을 수 있는 것이다.
상의에 착용할 수 있는 옷이 2벌, 하의에 착용할 수 있는 옷이 3벌인 경우를 가정해보자.
상의에 착용할 수 있는 경우의 수는 가지고 있는 2벌 또는 입지 않는 경우이므로 총 3가지다.
하의는 가지고 있는 3벌을 입거나 입지 않는 경우로 총 4가지다.
상의와 하의의 조합을 따져보면 총 3x4 = 12가지이다.
하지만 아예 아무것도 입지 않는 경우는 없다고 했으므로 모든 조합의 경우의 수에서 1가지만 빼주면 된다.
=> 즉 공식을 세워보자면 각 종류별로 (가지고 있는 옷의 개수 + 1)을 모두 곱한 뒤 1을 빼주면 된다.
import Foundation
func solution(_ clothes:[[String]]) -> Int {
var typeCount: [String:Int] = [:]
for cloth in clothes {
if typeCount[cloth[1]] != nil {
typeCount[cloth[1]]! += 1
} else {
typeCount[cloth[1]] = 1
}
}
var count: Int = 1
for (_, value) in typeCount {
count *= (value + 1)
}
return count - 1
}
반응형
'코딩테스트' 카테고리의 다른 글
[프로그래머스] 정렬 - H-Index (Swift 풀이) (0) | 2020.09.20 |
---|---|
[프로그래머스] 정렬 - K번째수 (Swift 풀이) (0) | 2020.09.20 |
[프로그래머스] 정렬 - 가장 큰 수 (Swift 풀이) (1) | 2020.09.19 |
[프로그래머스] 해시 - 베스트앨범 (Swift 풀이) (0) | 2020.09.11 |
[프로그래머스] 깊이/너비 우선 탐색(DFS/BFS) - 단어변환 (0) | 2020.07.15 |
Comments