https://programmers.co.kr/learn/courses/30/lessons/42578?language=swift
level 2
옷:종류로 된 딕셔너리가 주어지고, 입을 수 있는 옷의 조합의 수를 구하는 문제
한번에 종류당 1개의 옷을 입을 수 있으며, 아무것도 안입는건 불가능
접근방법*
처음에는 조합을 구하는 문제라고 생각해서 백트래킹이나 완전탐색 같은 알고리즘을 사용해서 조합을 구해야 되나 고민했었다.
안입는 경우를 종류별 옷에 개수에 추가하여 구한 블로그를 참고했다. 고등학생때 확통배울때 했었는데..까먹었었음..
종류별 옷의 개수 + 1(안입는 경우) 를 구한 후에 모든 종류의 옷의 개수를 곱해주면 된다.
그리고 하루에 최소 하나의 옷은 입어야 하기 때문에 아무것도 안입는 경우를 빼준다 (-1)
소스코드
import Foundation
func solution(_ clothes:[[String]]) -> Int {
var numOfClothes:[String:Int] = [:]
for c in clothes {
if numOfClothes[c[1]] == nil {
numOfClothes[c[1]] = 1
} else {
numOfClothes[c[1]]? += 1
}
}
return numOfClothes.values.reduce(1) { $0 * ($1+1) } - 1
}
저 방식만 생각하면 아주 간단한 문제였다..
728x90
'알고리즘 문제풀이' 카테고리의 다른 글
[프로그래머스] 기능개발 (Swift) (0) | 2022.03.02 |
---|---|
[프로그래머스] 조이스틱 (C++) (0) | 2022.03.02 |
[프로그래머스] 괄호 회전하기 (Swift) (스터디) (0) | 2022.02.27 |
[프로그래머스] 타겟 넘버 (Swift) (0) | 2022.02.22 |
[프로그래머스] 타겟 넘버 (C++) (0) | 2022.02.22 |