
TIL 20일 차 - 프로그래머스 Swift 의상 갈아입기 알고리즘 문제 풀이
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
이 문제는 딕셔너리를 이용해 옷의 종류를 key, 각 의상의 이름들은 value로 매핑하고 각 key에 매핑된 value의 개수를 구하면 쉽게 풀리는 문제이다.
1. 먼저 solution 함수에 key는 String, value는 Int인 빈 딕셔너리 dictionary변수를 선언해 주자
func solution(_ clothes:[[String]]) -> Int {
var dictionary: [String: Int] = [:]
}
2. 함수의 입력값인 2차원 배열 clothes를 name과 category로 분류해 각 category별 name의 개수를 dictionary에 넣어주는 반복문을 만들어주자
// 함수 선언부 생략
for item in clothes {
let name = item[0]
let category = item[1]
dictionary[category, default: 0] += 1 // category의 값이 +1씩 증가 (디폴트 값: 0)
}
이때 코니는 하루에 최소 한 개의 의상을 입는다는 조건이 있으므로
답: 전체 경우의 수 - 1(아무것도 입지 않는 경우의 수 = 1)이다.
이때 전체 경우의 수는 예를 들어 하의의 종류가 2개 (청바지와 카고바지)라면
+ 바지를 안 입는다.
+ 청바지를 입는다.
+ 카고바지를 입는다.
총 3가지로 (n+1) 가지의 경우의 수가 생긴다.
그런데 각 부위별 의상은 '동시에' 입는 것이므로 각각의 경우의 수를 곱하기(*)로 연산해 주면 된다.
3. 이렇게 딕셔너리에서 카테고리별 의상 개수인 값(value)을 추출하여 1을 더해주고 곱해주는 연산을 하면 끝난다.
var result = 1
for (_, value) in dictionary {
result += (value + 1)
}
return result - 1 // 옷을 무조건 하나는 입어야 함
최종 작성한 답 코드
import Foundation
func solution(_ clothes:[[String]]) -> Int {
var dictionary: [String: Int] = [:]
var result = 1
for item in clothes {
let name = item[0]
let category = item[1]
dictionary[category, default: 0] += 1
}
for (_, value) in dictionary {
result *= (value + 1)
}
return result - 1
}'iOS > Swift ' 카테고리의 다른 글
| [Swift 알고리즘] 2024 kakao winter internship 가장 많이 받은 선물 알고리즘 풀이 (0) | 2026.01.26 |
|---|---|
| [iOS-Swift] 심화 문법 - 숫자 야구 게임 최종 리팩토링 (1) | 2026.01.21 |
| [iOS-Swift] 고차함수 Map 활용하기 (0) | 2026.01.19 |
| [iOS-Swift] 심화 문법 문제 - 숫자 야구 게임 (0) | 2026.01.18 |
| [iOS-Swift] 스위프트에서 문자열 뒤집기 + reduce (0) | 2026.01.16 |