Problem
Solution
ํด๋น ๋ฌธ์ ๋ "์ด์งํธ๋ฆฌ " ๋ฌธ์ ์ ๋๋ค.
์ด์ง ํธ๋ฆฌ๋ ๊ฐ๊ฐ์ ๋ ธ๋๊ฐ ์ต๋ ๋ ๊ฐ์ ์์ ๋ ธ๋์ ๊ฐ์ง๊ณ ์๊ณ ์ผ์ชฝ ์์ ๋ ธ๋์ ์ค๋ฅธ์ชฝ ์์ ๋ ธ๋๋ผ๊ณ ํ๋ค.
1. ์ด๊ธฐ์ ํ์ํ ๋ณ์๋ค์ ์ธํ ํด์ค๋๋ค.
//๋ถ๋ชจ์ ์์์ ๋ด์ ์ด์ค๋ฐฐ์ด
var parentsChildren:[[Int]] = Array(repeating: [], count: nodeinfo.count + 1)
//๊ฐ ๋
ธ๋์ ๋ฒ์๋ค์ ๋ด์ ๋ฐฐ์ด
var ranges = Array(repeating: [ClosedRange<Int>](), count: nodeinfo.count + 1)
//์ ์์ํ ๋ด์ ๋ฐฐ์ด
var preorder:[Int] = []
//ํ์์ํ๋ฅผ ๋ด์ ๋ฐฐ์ด
var postorder:[Int] = []
//๊ฐ์ฅ ๋์ ๋ ๋ฒจ
let maxLevel:Int = nodeinfo.max{$0[1] < $1[1]}?[1] ?? 0
//๋ ๋ฒจ์ ๋
ธ๋๋ค์ ๋ด์ ๋ฐฐ์ด
var levels = Array(repeating:[Int](), count: 1000)
2. ๋ ๋ฒจ์ ๋ง์ถฐ ๋ ธ๋๋ค์ ์ธํ ํด์ค๋๋ค.
๊ฐ ๋ ธ๋์ y๊ฐ์ levels์ ์ธ๋ฑ์ค๋ก ๋ ธ๋๋ฅผ ๋ฃ์ด์ค๋๋ค.
(์๋ ์์ค์ฝ๋์์ setLevelsNode ๋ฅผ ์ฐธ๊ณ ํด์ฃผ์ธ์!)
3. ๋ ๋ฒจ๊ณผ ๋ฒ์์ ๋ง์ถฐ ๋ถ๋ชจ์ ๊ฐ ์์๋ค์ ์ธํ ํด์ค๋๋ค.
์๋์ ๊ฐ์ด ๋ ธ๋๋ค์ ์์น๋ฅผ ํ์ํ๋ค๋ฉด ์ด์ ์์๋ค์ ์ธํ ํด์ผํ๋๋ฐ์.
์ฌ๊ธฐ์ ์ ๋ 5๋ฒ์ด ๋๊ตฌ์ ์์์ด ๋์ผํ๋์ง ํท๊ฐ๋ ธ๋๋ฐ์.
์ด๋ ๊ฒ 9๋ฒ์ ์์์ด ๋ ์๋ ์๋๊ฑฐ ์๋๊ฐ? ๊ทธ๋ฌ๋ฉด ์ด๋ป๊ฒ ์์์ ์ ํด์ผํ ํ์ง? ํ๋ค๊ฐ
์ ๊ฐ์ฅ ๋ถ๋ชจ ๋ ๋ฒจ์ ์๋ ๋ ธ๋์ x ๊ธฐ์ค์ผ๋ก ๊ฐ์ฅ ๊ฐ๊น์ด ๋ ธ๋๊ฐ ๋ถ๋ชจ๊ฐ ๋๋๊ตฌ๋!
๋ผ๊ณ ํ์๋๋ 34.5์ ์ด ๋์ค๋๋ผ๊ตฌ์....
๊ทธ๋์ ์นด์นด์ค ํ์ด๋ฅผ ๋ณด๋ ์ด์ง ํธ๋ฆฌ๋ ๊ฐ ๋ ธ๋์ ์ผ์ชฝ๊ณผ ์ค๋ฅธ์ชฝ์ ์์์ด ๊ฒฐ์ ๋๋ค๊ณ ํฉ๋๋ค..
์๋ฅผ ๋ค๋ฉด ์๋์ ๊ฐ์ด ๋ฐ๋ก ์๋ ๋ ๋ฒจ์ด๋ฉด์ ์ผ์ชฝ์ ์๋ 4๋ฒ์ด ์ผ์ชฝ ์์์ด ๋๋ ๊ฒ์ด๊ณ ์ค๋ฅธ์ชฝ์ ์๋ 2๋ฒ์ด ์ค๋ฅธ์ชฝ ์์์ด ๋ฉ๋๋ค.
๋ํ 4๋ฒ ์๋ 1๋ฒ์ 4๋ฒ๊ณผ 2๋ฒ ์ค ์ผ์ชฝ์ ์๋ ๋ ธ๋๊ฐ ๋ถ๋ชจ๊ฐ ๋๋ฏ๋ก 2๋ฒ์ ์์์ด ๋ ์ ์๋ ๊ฒ์ด์ฃ !
๊ฐ์ ์๋ฆฌ๋ก 5๋ฒ์ด 9๋ฒ์ ์์์ด ๋ ์ ์๊ณ 8๋ฒ์ ์์์ด ๋ฉ๋๋ค.
์์์ ์ผ์ชฝ ๋ฒ์๋ ๋ถ๋ชจ์ ์ผ์ชฝ ๋ฒ์๋ถํฐ ํ์ฌ ์์์ x ๊น์ง ์ค๋ฅธ์ชฝ ๋ฒ์๋ ํ์ฌ์ x๋ถํฐ ๋ถ๋ชจ์ ์ค๋ฅธ์ชฝ ๋ฒ์๊น์ง๋ก ์ธํ ํด์ค๋๋ค.
( ์๋ ์์ค์ฝ๋์์ setParentsChilren์ ์ฐธ๊ณ ํด์ฃผ์ธ์!)
4. ์ ์ ์ํํ ๊ฐ์ ์ ์ฅํ๋ค.
์์์ ์์๊ณผ ๋ถ๋ชจ๋ฅผ ์ธํ ํ ๋ฐฐ์ด์ DFS ๋ฐฉ์์ผ๋ก ์ํํ๋ฉด์ ์ฐจ๋ก๋ก ๋ฐฉ๋ฌธํ ๋ ธ๋๋ค์ ๋ด์์ค๋๋ค.
(์๋ ์์ค์ฝ๋์์ searchPreorder๋ฅผ ์ฐธ๊ณ ํด์ฃผ์ธ์!)
5. ํ์ ์ํํ ๊ฐ์ ์ ์ฅํ๋ค.
DFS์๋ ์ ๋ฐ๋๋ก ์ค๋ฅธ์ชฝ ๋งจ ๋ ๋ฆฌํ๋ ธ๋๋ถํฐ ์ฐจ๋ก๋ก ์ผ์ชฝ ๋งจ ์ ๋ฃจํธ ๋ ธ๋๊น์ง ์ฐจ๋ก๋ก ๋ฐฉ๋ฌธํ ๋ ธ๋๋ค์ ๋ด์์ค๋๋ค.
(์๋ ์์ค์ฝ๋์์ searchPostorder๋ฅผ ์ฐธ๊ณ ํด์ฃผ์ธ์!)
6. ์ ์ ์ํํ ๊ฐ๊ณผ ํ์ ์ํํ ๊ฐ์ ๋ฐํํด์ค๋๋ค.
Source Code
'๐ Problem Solution > Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Swift] 2019 ์นด์นด์ค ๊ฐ๋ฐ์ ๊ฒจ์ธ ์ธํด์ฝ ๋ถ๋ ์ฌ์ฉ์ (0) | 2021.06.26 |
---|---|
[Swift] ํ๋ก๊ทธ๋๋จธ์ค ๊ฐ์ฅ ๊ธด ํฐ๋ฆฐ๋๋กฌ (0) | 2021.06.22 |
[Swift] ํ๋ก๊ทธ๋๋จธ์ค ์ซ์ ๊ฒ์ (0) | 2021.06.11 |
[Swift] ํ๋ก๊ทธ๋๋จธ์ค ์๊ฐ ์ฝ๋ ์ฑ๋ฆฐ์ง 2 ๋ชจ๋ 0์ผ๋ก ๋ง๋ค๊ธฐ (0) | 2021.06.02 |
[Swift] ํ๋ก๊ทธ๋๋จธ์ค ์๊ฐ ์ฝ๋ ์ฑ๋ฆฐ์ง 2 ๊ดํธ ํ์ ํ๊ธฐ (0) | 2021.05.31 |
๋๊ธ