[์ค์ํํธ ์๊ณ ๋ฆฌ์ฆ] ํ๋ก๊ทธ๋๋จธ์ค: ์ฌํ๊ฒฝ๋ก
๋ฌธ์
https://programmers.co.kr/learn/courses/30/lessons/43164
์ฝ๋ฉํ ์คํธ ์ฐ์ต - ์ฌํ๊ฒฝ๋ก
[["ICN", "SFO"], ["ICN", "ATL"], ["SFO", "ATL"], ["ATL", "ICN"], ["ATL","SFO"]] ["ICN", "ATL", "ICN", "SFO", "ATL", "SFO"]
programmers.co.kr
๋ฌธ์ ์ค๋ช
์ฃผ์ด์ง ํญ๊ณต๊ถ์ ๋ชจ๋ ์ด์ฉํ์ฌ ์ฌํ๊ฒฝ๋ก๋ฅผ ์ง๋ ค๊ณ ํฉ๋๋ค. ํญ์ "ICN" ๊ณตํญ์์ ์ถ๋ฐํฉ๋๋ค.
ํญ๊ณต๊ถ ์ ๋ณด๊ฐ ๋ด๊ธด 2์ฐจ์ ๋ฐฐ์ด tickets๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ๋ฐฉ๋ฌธํ๋ ๊ณตํญ ๊ฒฝ๋ก๋ฅผ ๋ฐฐ์ด์ ๋ด์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ์ฌํญ
- ๋ชจ๋ ๊ณตํญ์ ์ํ๋ฒณ ๋๋ฌธ์ 3๊ธ์๋ก ์ด๋ฃจ์ด์ง๋๋ค.
- ์ฃผ์ด์ง ๊ณตํญ ์๋ 3๊ฐ ์ด์ 10,000๊ฐ ์ดํ์ ๋๋ค.
- tickets์ ๊ฐ ํ [a, b]๋ a ๊ณตํญ์์ b ๊ณตํญ์ผ๋ก ๊ฐ๋ ํญ๊ณต๊ถ์ด ์๋ค๋ ์๋ฏธ์ ๋๋ค.
- ์ฃผ์ด์ง ํญ๊ณต๊ถ์ ๋ชจ๋ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
- ๋ง์ผ ๊ฐ๋ฅํ ๊ฒฝ๋ก๊ฐ 2๊ฐ ์ด์์ผ ๊ฒฝ์ฐ ์ํ๋ฒณ ์์๊ฐ ์์๋ ๊ฒฝ๋ก๋ฅผ return ํฉ๋๋ค.
- ๋ชจ๋ ๋์๋ฅผ ๋ฐฉ๋ฌธํ ์ ์๋ ๊ฒฝ์ฐ๋ ์ฃผ์ด์ง์ง ์์ต๋๋ค.
ํ์ด
DFS๋ก ๊ฐ ์ ์๋ ๊ฒฝ๋ก๋ฅผ ๋๊น์ง ๋ค ๊ฐ๋ณด๋ฉด์ ํฐ์ผ์ ๋ชจ๋ ์ฌ์ฉํ ์ ์๋์ง ํ์ธํด๋ณด๋ฉด ๋๋ ๋ฌธ์ ์์ต๋๋ค. ๊ฐ์ ์ถ๋ฐ์ง์ ๋ชฉ์ ์ง๋ฅผ ๊ฐ์ง๊ณ ์๋ ํฐ์ผ์ด ์์ ์ ์๊ธฐ ๋๋ฌธ์ ๋ฐฉ๋ฌธ์ ๋ณด(์ฌ์ฉํ ํฐ์ผ์ธ์ง)๋ฅผ ๊ด๋ฆฌํ ์ ์๋๋ก ์๋ฃ๊ตฌ์กฐ๋ฅผ ๋ง๋ค์ด์ผ ํ๋๋ฐ์, ์ ๋ ๋์ ๋๋ฆฌ๋ฅผ ์ฌ์ฉํด์ ์ถ๋ฐ์ง๋ฅผ ํค๊ฐ์ผ๋ก ๋๊ณ ๊ฐ์ผ๋ก๋ ๋์ฐฉ์ง ์ด๋ฆ๊ณผ ์ฌ์ฉํ ํฐ์ผ์ธ์ง ์ฌ๋ถ๋ฅผ ํ์ํ๋ ๊ฐ์ผ๋ก ๊ตฌ์ฑ๋ ํํ์ ๋ฐฐ์ด์ ์ ์ฅํด๋์์ต๋๋ค.
DFS๋ก ์๋ก์ด ๊ฒฝ๋ก๋ฅผ ๊ฐ ๋๋ง๋ค ํด๋น ๊ฒฝ๋ก๋ฅผ ๊ฐ๋ ์ฌ์ฉํ ํฐ์ผ์ ์ฌ์ฉํ๋ค๊ณ ์ฒ๋ฆฌ๋ฅผ ํ๊ณ , dfs๊ฐ ๋๊น์ง ๋๋ฌํ์ฌ ํจ์๊ฐ ๋ฐํ๋์์ ๋๋ ์ฌ์ฉํ์ง ์์ ํฐ์ผ์ผ๋ก ๋ค์ ์ค์ ํด์ฃผ๋ ์์ ์ ๋ฐ๋ณตํ์ต๋๋ค. ์ด ๊ณผ์ ์์ ์ด๋ฒ์ ์๋ก ๋ฐฐ์ด Bool ๊ฐ์ toggle ๋ฉ์๋๋ฅผ ์ฌ์ฉํด๋ดค๋๋ฐ ๊ฐ๋ ์ฑ์ด ์ ๋ง ์ข์์ง๋๋ผ๊ตฌ์!! ์ถ์ฒํฉ๋๋ค!!
ํ์์ ๋ชจ๋ ํฐ์ผ์ด ๋ค ์ฌ์ฉ๋๋ ์๊ฐ์ ์ข ๋ฃ๋๋๋ก ํฐ์ผ์ด ๋ค ์ฌ์ฉ๋์์ ๋๋ง ๊ฒฝ๋ก๋ฅผ ๋ฐฐ์ด๋ก ๋ฐํํ๊ณ ๋๋จธ์ง ๊ฒฝ์ฐ์๋ ๋น ๋ฐฐ์ด์ ๋ฐํํด์ ๋ด๋ถ์ ๊ฐ์ด ์ฑ์์ ธ์๋ ๋ฐฐ์ด์ ๋ฐํ๊ฐ์ผ๋ก ๋ฐ๋ ์๊ฐ ์ ์ฒด ํจ์๋ฅผ ์ข ๋ฃํ๊ณ ๊ฒฝ๋ก๋ฅผ ์ ๋ต์ผ๋ก ๋ฐํํ๋๋ก ํ์ต๋๋ค. ํฐ์ผ์ ๋ค ์ฌ์ฉํ๋์ง ์ฒดํฌํ ๋๋ flatMap์ผ๋ก ๋์ ๋๋ฆฌ์ ๋ค์ด์๋ ๋ชจ๋ ํค๋ค์ ๋ํ ๊ฐ์ 1์ฐจ์ ๋ฐฐ์ด์ ํ์ด์ ๋ฃ์ด์ฃผ๊ณ , ๋ชจ๋ ํํ์ ํฐ์ผ ์ฌ์ฉ์ฌ๋ถ๊ฐ true์ธ์ง allSatisfy๋ก ํ์ธํด์ฃผ์์ต๋๋ค. ๊ณ ์ฐจํจ์ ์งฑ!