https://programmers.co.kr/learn/courses/30/lessons/42578?language=swift
코딩테스트 연습 - 위장
programmers.co.kr
아무 생각없이 c++ 처럼 풀다가
아 Swift 인데 값이 없을 땐 Int 값을 더해주지 못하는구나.. nil 이니까 당연하지
라는 생각으로 무지성 코딩으로 for문과 if 문으로 풀었습니다..
절대 이거보다 더 이쁘게 코드를 짤 수 있겠다 싶어서 다른사람들의 풀이를 보면서 반성과 깨달음을..
전체코드
import Foundation
func solution(_ clothes:[[String]]) -> Int {
var result = 1
var clothesDict: Dictionary<String, Int> = [:]
for cloth in clothes {
if clothesDict[cloth[1]] == nil {
clothesDict[cloth[1]] = 1
} else {
clothesDict.updateValue(clothesDict[cloth[1]]! + 1, forKey: cloth[1])
}
}
for (key, value) in clothesDict {
result *= value + 1
}
return result - 1
}
다른 사람의 풀이를 보면서 든 여러 잡생각
음 guard let 으로 새로운 count 변수를 만들어서 처리했구나
guard let 이나 if let을 쓰려다가 만들 변수가 뭐지..? 했는데 이렇게 짜도 깔끔한 것 같다.
적어도 내 코드보단 Swift 스럽다..ㅎㅎ
코드들을 보다가 compactMap 이라는 함수가 나오는데 자세히 알아봐야겠다.
이차원 배열을 map으로 만드는 함수 같은데 알아두면 편리할듯하다.
'ALGORITHM' 카테고리의 다른 글
[Swift] LeetCode: Two Sum (0) | 2022.03.12 |
---|---|
[Swift] 14889 스타트와 링크 (조합) (0) | 2022.03.11 |
[Swift] 17780 새로운 게임 (구현) (0) | 2022.03.01 |
[Swift] Lv1.로또의 최고 순위와 최저 순위 (dictionary 사용) (0) | 2022.02.27 |
[swift] 알고리즘 풀기 전 준비 (0) | 2021.08.10 |