본문 바로가기
Algorithm/문제풀이_프로그래머스

[Swift][프로그래머스][LV_2] 위장

by Joahnee 2022. 2. 22.

요구능력 : Dictionary

 

코드설명 : 

 

옷 입는 경우의수다.

상의 반팔티, 후드티, 맨투맨

하의 청바지, 슬렉스, 조거팬츠

 

위와 같이 있으면 옷을 입는 총 경우의 수는 9가지이다.

하지만 이 문제에서는 하나만 입는 경우의 수도 셌으므로

상의 반팔티, 후드티, 맨투맨, 안입음

하의 청바지, 슬렉스, 조거팬츠, 안입음

안입음까지 포함시켜줘야하고,

둘다 안입는 경우는 포함안시키기에 -1을 해줘야한다.

 

나는 dictionary를 활용해서 dictionary가 비어있지 않으면 1을 더해줬고 비어있으면 2로 초기화했다.

2로 초기화 한 이유는 dict[바지] 이면 현재 for문을 돌고있는 clothes의 원소중 바지하나가 도는것이기 때문에 현재바지 1개 + 안입음 1개 해서 2로 초기화했다.

 

그리고 결과값을 저장할 때 *=을 이용해서 경우의수를 곱해줬고 마지막에 1을 뺌으로써 모두 안입음의 경우를 빼주었다.

 

후기 : 딕셔너리 활용할줄 알면 쉬운문제

func solution(_ clothes:[[String]]) -> Int {
    var result = 1
    var dict = [String: Int]()
    for i in clothes{
        if dict[i[1]] != nil {
            dict[i[1]]! += 1
        }else{
            dict[i[1]] = 2
        }
    }

    for v in dict.values{
        result *= v
    }
    result -= 1

    return result
}

댓글