Problem
Solution
1. Set๋ก ๋ ์ทจ์ฝ์ ๋ค์ด ๋ด์ weaks ๋ณ์๋ฅผ ๋ง๋ค์ด์ค๋๋ค.
Set๋ก ๋ง๋ค์ด์ฃผ๋ ์ด์ ๋ ์ทจ์ฝ์ ๋ค์ด ๊ฐ์ ๊ฒ๋ค์ ๋ฐ๋ณต์ ํผํ๊ธฐ ์ํด์์ ๋๋ค.(์๊ฐ์ด๊ณผ ํด๊ฒฐํ๊ธฐ ์ํด)
var weaks:Set<[Int]> = [weak]
2. ์ด๋ํ ์ ์๋ ๊ฑฐ๋ฆฌ๊ฐ ํฐ ์น๊ตฌ๋ถํฐ ์ฐจ๋ก๋ก ์ํํ๋ค.
์ต๋ํ ์ ์ ์น๊ตฌ๋ฅผ ์ด์ฉํด์ผ ํ๋ฏ๋ก ๊ฑฐ๋ฆฌ๊ฐ ํฐ ์น๊ตฌ๋ถํฐ ์ํํฉ๋๋ค.
for (i,d) in dist.reversed().enumerated() { ...
3. ์ด๋ฏธ ์ ๊ฒํ ์ทจ์ฝ์ ๋ค์ ํํฐ๋งํ ์ทจ์ฝ์ ๋ค์ ์๋ก์ด ์ทจ์ฝ์ ๋ค์ ๋ด์์ค๋๋ค.
weaks์ ์ทจ์ฝ์ ๋ค์ด ๋ด๊ธด ๋ฐฐ์ด์์ ์ทจ์ฝ์ ๋ค์ ์ํํด์ค๋๋ค.
๊ทธ๋ฆฌ๊ณค ์ ๊ฒ๋์ง ์์ ์ทจ์ฝ์ ๋ค์ ํํฐ๋งํด์ค๋๋ค.
๋ง์ฝ ํํฐ๋งํ ์ทจ์ฝ์ ์ด ํ๋๋ ๋จ์ง ์์๋ค๋ฉด ๋ชจ๋ ์ ๊ฒ๋ ๊ฒ์ด๋ฏ๋ก ์น๊ตฌ ์ซ์๋ฅผ ๋ฐํํด์ค๋๋ค.
์๋๋ผ๋ฉด ์๋ก์ด ์ทจ์ฝ์ ๋ค์ ๋ด๋ ๊ณณ์ ํํฐ๋งํ ์ทจ์ฝ์ ๋ค์ ๋ฃ์ด์ค๋๋ค.
weaks์ ์ทจ์ฝ์ ๋ค์ ์ํ๊ฐ ๋๋ฌ๋ค๋ฉด weaks๋ฅผ ์๋ก์ด newWeaks๋ก ๋์ฒดํด์ค๋๋ค.
func solution(_ n:Int, _ weak:[Int], _ dist:[Int]) -> Int {
var weaks:Set<[Int]> = [weak]
for (friendCount,d) in dist.reversed().enumerated() {
var newWeaks:Set<[Int]> = []
for w in weaks {
for start in w {
let end = (n+(start-d))%n
let filterWeaks = start > end ? w.filter{$0 < end || start+1...n ~= $0 } : w.filter{ start+1..<end ~= $0 }
if filterWeaks.isEmpty { return friendCount+1 }
newWeaks.insert(filterWeaks)
}
}
weaks = newWeaks
}
return -1
}
Source Code
P.S
๋ํํ ๋ ์ ๋ง ์ด๋ ค์ ๋ ๋ฌธ์ ์๋ค...
์ฒ์์ ์๊ณ ๋ฐ๋๋ฐฉํฅ๊ณผ ์๊ณ๋ฐฉํฅ์ผ๋ก DFS ๋ฐฉ์์ผ๋ก ํ๋๋ฐ ์๊ฐ ์ด๊ณผ๊ฐ ๋ฌ๋ค.
์๋ฌด๋ฆฌ ์๊ฐํด๋ ๋ชจ๋ฅด๊ฒ ์ด์ ๋ค๋ฅธ ์ฌ๋ ํ์ด๋ฅผ ๋ดค๋๋ฐ Set๋ก ์ทจ์ฝ์ ๋ค์ ๋ด์์ค์ ๋ฐ๋ณต๋์ง ์๊ฒ ํ๋๊ฒ ํต์ฌ์ด์๋ค...
๊ทธ๋ฆฌ๊ณ ์์ง๊น์ง ์ดํด๋ ์๋๋๋ฐ ์ ๋ฐ์๊ณ ๋ฐฉํฅ์ผ๋ก ํต์ผํด๋ ๋ต์ด ๊ฐ์๊ฑธ๊น..? ๋๋ฌด ์ฐ์ฐํ๋ค...
์ฐธ๊ณ ํ ๋ธ๋ก๊ทธ
'๐ Problem Solution' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Swift] Baekjoon ์ต๋๊ฐ 2562๋ฒ (0) | 2022.01.06 |
---|---|
[Swift] Baekjoon ํฐ ์ A + B 10757๋ฒ (0) | 2022.01.06 |
[Swift] 2018 KAKAO BLIND RECRUITMENT [1์ฐจ] ์ถ์ ํธ๋ํฝ (0) | 2021.05.19 |
[Swift] 2020 KAKAO INTERNSHIP ํคํจ๋ ๋๋ฅด๊ธฐ (0) | 2021.05.08 |
[Swift] 2021 KAKAO BLIND RECRUITMENT ์นด๋ ์ง ๋ง์ถ๊ธฐ (1) | 2021.04.27 |
๋๊ธ