개발/Swift
[Swift] 위장 프로그래머스 코딩테스트
덤벨로퍼
2022. 1. 2. 15:03
우선 주어진 배열을 딕셔너리 타입으로 변환한다.
딕셔너리는 의상의 종류(키) : 의상의 갯수(값) 으로 구성된다.
{
"headgear" : 2 ,
"eyewear": 1
}
위 의상들을 조합할수있는 코디의 개수는 5개다.
모자는 총 두개이므로 3가지의 경우가 나온다. 1번 모자를쓰거나 2번 모자를 쓰거나 둘다 안쓸수도있다.
안경은 총 한개이므로 2가지 경우가 나온다. 1번 안경을 쓰거나 안쓸수도있다.
그럼 이 두개를 곱해주면 된다. 3 *2 = 6
그런데 아무거도 안입는 경우는 없다하니 -1 을 해주면 된다.
코드로 바꿔보자.
func solution(_ clothes:[[String]]) -> Int {
var dict = [String:Int]()
var count = 1 // 곱셈을 사용해야하므로 초기값을 1로 넣었다.
//딕셔너리 구현
clothes.forEach{ value in
if let count = dict[value[1]] {
//해당 키값이 있는경우 수량 +1
dict[value[1]] = count + 1
}else {//키값 없으면 넣어주고 수량 1 넣어줌
dict[value[1]] = 1
}
}
//딕셔너리 반복해 값을 모두 곱해줌
dict.forEach { (key,value) in
count = count * ( value + 1)
}
//모두안입는경우 제와 -1
count -= 1
return count
}