- ์์ฅ
-
darklight
sublimevimemacs
Swift
๋ฌธ์ ์ค๋ช
์คํ์ด๋ค์ ๋งค์ผ ๋ค๋ฅธ ์ท์ ์กฐํฉํ์ฌ ์ ์ด ์์ ์ ์์ฅํฉ๋๋ค.
์๋ฅผ ๋ค์ด ์คํ์ด๊ฐ ๊ฐ์ง ์ท์ด ์๋์ ๊ฐ๊ณ ์ค๋ ์คํ์ด๊ฐ ๋๊ทธ๋ ์๊ฒฝ, ๊ธด ์ฝํธ, ํ๋์ ํฐ์ ์ธ ๋ฅผ ์ ์๋ค๋ฉด ๋ค์๋ ์ ์ฒญ๋ฐ์ง๋ฅผ ์ถ๊ฐ๋ก ์ ๊ฑฐ๋ ๋๊ทธ๋ ์๊ฒฝ ๋์ ๊ฒ์ ์ ๊ธ๋ผ์ค๋ฅผ ์ฐฉ์ฉํ๊ฑฐ๋ ํด์ผ ํฉ๋๋ค.
์ข ๋ฅ์ด๋ฆ
์ผ๊ตด | ๋๊ทธ๋ ์๊ฒฝ, ๊ฒ์ ์ ๊ธ๋ผ์ค |
์์ | ํ๋์ ํฐ์ ์ธ |
ํ์ | ์ฒญ๋ฐ์ง |
๊ฒ์ท | ๊ธด ์ฝํธ |
์คํ์ด๊ฐ ๊ฐ์ง ์์๋ค์ด ๋ด๊ธด 2์ฐจ์ ๋ฐฐ์ด clothes๊ฐ ์ฃผ์ด์ง ๋ ์๋ก ๋ค๋ฅธ ์ท์ ์กฐํฉ์ ์๋ฅผ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ์ฌํญ
- clothes์ ๊ฐ ํ์ [์์์ ์ด๋ฆ, ์์์ ์ข ๋ฅ]๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
- ์คํ์ด๊ฐ ๊ฐ์ง ์์์ ์๋ 1๊ฐ ์ด์ 30๊ฐ ์ดํ์ ๋๋ค.
- ๊ฐ์ ์ด๋ฆ์ ๊ฐ์ง ์์์ ์กด์ฌํ์ง ์์ต๋๋ค.
- clothes์ ๋ชจ๋ ์์๋ ๋ฌธ์์ด๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
- ๋ชจ๋ ๋ฌธ์์ด์ ๊ธธ์ด๋ 1 ์ด์ 20 ์ดํ์ธ ์์ฐ์์ด๊ณ ์ํ๋ฒณ ์๋ฌธ์ ๋๋ '_' ๋ก๋ง ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
- ์คํ์ด๋ ํ๋ฃจ์ ์ต์ ํ ๊ฐ์ ์์์ ์ ์ต๋๋ค.
์ ์ถ๋ ฅ ์
clothes | return |
[[yellow_hat, headgear], [blue_sunglasses, eyewear], [green_turban, headgear]] | 5 |
[[crow_mask, face], [blue_sunglasses, face], [smoky_makeup, face]] | 3 |
ํ์ด: ์ด๋ฒ ๋ฌธ์ ๋ ํด์ฌ ๋ฌธ์ ์ ๋๋ค.
Swift๋ ๋์ ๋๋ฆฌ๋ฅผ ์ด์ฉํด์ผํ๋ ๋ฌธ์ ์ฃ !
์ฐ์ ์์์ ์ข ๋ฅ๋ฅผ ํค๊ฐ์ผ๋ก ์์์ ์ด๋ฆ์ ๋ฐธ๋ฅ๊ฐ์ผ๋ก ํ๋ ๋์ ๋๋ฆฌ๋ฅผ ๋ง๋ค์ด์ค๋๋ค.(์์์ ์ด๋ฆ์ ์ฌ๋ฌ๊ฐ ๋ค์ด๊ฐ ์ ์์ผ๋ฏ๋ก ๋ฐฐ์ด์ผ๋ก ๋ง๋ค์ด์ค๋๋ค.) -> var dic = [String:[String]]()
๊ทธ๋ฆฌ๊ณค clothes๋ฅผ for๋ฌธ์ผ๋ก ๋๋ ค for c in clothes{...}
๋ง์ฝ key๊ฐ์ผ๋ก ์์์ ์ข ๋ฅ๊ฐ nil์ด ์๋๋ผ๋ฉด ๋์ ๋๋ฆฌ์ ํด๋น ์์์ ์ข ๋ฅ๋ฅผ ํค๊ฐ์ผ๋ก ํ๋ ๋ฐฐ์ด์ ์์์ ์ด๋ฆ์ ์ถ๊ฐ์์ผ์ฃผ๊ณ ->
if dic[c[1]] != nil{ dic[c[1]]!.append(c[0]) }
์๋๋ผ๋ฉด ์์์ ์ข ๋ฅ๋ฅผ ํค๊ฐ์ผ๋ก ํด๋น ์์์ ์ข ๋ฅ๊ฐ ๋ด๊ธด ๋ฐฐ์ด์ ๋ง๋ค์ด์ค๋๋ค -> else{ dic[c[1]] = [c[0]] }
๊ทธ๋ฆฌ๊ณค ๋์ ๋๋ฆฌ์์ ๋ฐฐ์ด๋ค์ ๊ฐฏ์๋ง ๋ฐ๋ก count๋ก ๋งคํํด์ค๋๋ค. -> let count = dic.mapValues{$0.count}.values
๊ทธ๋ฆฌ๊ณค reduce๋ฅผ ์ด์ฉํ์ฌ ์์ ๋ด๊ธด ๊ฐ ์ข ๋ฅ์ ๊ฐฏ์์ +1์ ํด์ค ๊ฐ์ ์ฐจ๋ก๋ก ๊ณฑํ๋ค -1์ ํด์ฃผ๊ณ returnํด์ค๋๋ค. ->return count.reduce(1){$0*($1+1)} - 1
๊ฐ ์ข
๋ฅ์ ๊ฐฏ์์ +1์ ํด์ฃผ๋ ์ด์ ๋ ์์
๋ ๊ฒฝ์ฐ์ ์๋ ์๊ธฐ ๋๋ฌธ์ +1์ ํด์ฃผ๊ณ ๋ง์ง๋ง์ -1์ ํ๋ ์ด์ ๋ ๋ชจ๋ ๋ค ์์
๋ ๊ฒฝ์ฐ๋ ์๋๊ธฐ ๋๋ฌธ์
๋๋ค.
์ ์ฒด์ฝ๋
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
import Foundation
func solution(_ clothes:[[String]]) -> Int {
var dic = [String:[String]]()
for c in clothes{
if dic[c[1]] != nil{
dic[c[1]]!.append(c[0])
}else{
dic[c[1]] = [c[0]]
}
}
let count = dic.mapValues{$0.count}.values
return count.reduce(1){$0*($1+1)} - 1
}
|
'๐ Problem Solution > Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค ๋ค์ ํฐ ์ซ์ Swift (0) | 2020.06.21 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค ์นดํซ Swift (0) | 2020.05.28 |
ํ๋ก๊ทธ๋๋จธ์ค ์ซ์์ผ๊ตฌ Swift (0) | 2020.05.18 |
ํ๋ก๊ทธ๋๋จธ์ค H-Index Swift (0) | 2020.05.12 |
ํ๋ก๊ทธ๋๋จธ์ค ๊ฐ์ฅ ํฐ ์ Swift (0) | 2020.04.27 |
๋๊ธ