티스토리 뷰

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
}

저 방식만 생각하면 아주 간단한 문제였다..

 

댓글
댓글쓰기 폼