티스토리 뷰
728x90
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 |
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 자바
- 그리디알고리즘
- 우선순위큐
- 정렬
- Swift
- 알고리즘
- 수학
- 투포인터
- 최소힙
- 토마토
- 가장 큰 수 프로그래머스
- 가장 큰 수 Swift
- 게임이론
- dp
- 파이썬
- c++
- 웹크롤링
- 스택
- 최대힙
- 트리
- 백트래킹
- 프로그래머스
- 최단경로
- dfs
- BFS
- 브루트포스
- 동적계획법
- 백준
- 이분탐색
- 다이나믹프로그래밍
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
글 보관함