Maze Search - Minimum Distance
BFS
Last updated
BFS
Last updated
ํ๋ฆฐ ์ด์ (ํ๋ฆฐ ๋ถ๋ถ)
scanner์ nextInt()์ nextLine()์ ํจ๊ป ์ธ ๋ ๋ฐ๋์ ์ฃผ์ํด์ผํ๋ค! ์์์ m,n์ ์ ๋ ฅ๋ฐ๊ณ ๋ ํ nextLine์ผ๋ก String์ ์ ๋ ฅ ๋ฐ์ ๋, ์์์ ์ ์์ ๊ฐํ๋ฌธ์(\n)๋ฅผ ํจ๊ป ์ ๋ ฅํ๋ฉด ๊ทธ ๋ค์ String์ ์ด ๊ฐํ๋ฌธ์๋ฅผ String์ผ๋ก ๋ฐ๊ธฐ ๋๋ฌธ์ ๋ฐ๋์ nextLine()์ ํ๋ฒ ๋ ๋ฃ์ด์ฃผ์ด์ผ ํ๋ค!
๋ฐฐ์ด ๋ด์ฉ
๊ฑฐ๋ฆฌ ๋ฐฐ์ด์ด ์๋ค๋ฉด ์ค๋ณต ์ฒดํฌ ๋ฐฐ์ด์ ๋ถํ์ํ๋ค! ์ต์ ๊ฑฐ๋ฆฌ๋ฅผ ์ฐพ๊ธฐ ์ํด ๊ฑฐ๋ฆฌ๋ฅผ ์ ์ฅํ๋ 2์ฐจ์ ๋ฐฐ์ด์ ๋ง๋ ๋ค. ๋ํดํธ ๊ฐ์ '-1'๋ก ํด์ฃผ๊ณ , ์์ํ๋ ์์น๋ฅผ '0'์ผ๋ก ํ๋ค. BFS ์ํํ ๋ ์ค๋ณต ์ฒดํฌ ๋ฐฐ์ด ๋์ , ์ด dist๋ฐฐ์ด ๊ฐ์ด -1์ด๋ฉด ๊ทธ ์ขํ์ ๋ฐฉ๋ฌธํ์ง ์์ ๊ฒ์ด๋ฏ๋ก, ์ธ์ ๋ ธ๋์ ์ขํ๋ฅผ ์ ์ฅํ๊ณ ๋ฒ์์ฒดํฌ ํ ์ ํจํ ๋ฒ์ ๋ด๋ฉด ์ ๋ ฅ ๋ฐฐ์ด์์ ์ด๋๊ฐ๋ฅํ์ง('1'์ด๋ฉด ์ด๋ ๊ฐ๋ฅ), ์ค๋ณต ๋ฐฉ๋ฌธ์ด ์๋์ง(dist ๊ฐ์ด '-1') ํ์ธํด์ฃผ๋ฉด ๋๋ค!
Scanner.nextLine()์ผ๋ก ๊ณต๋ฐฑ์์ด 2์ฐจ์ ๋ฐฐ์ ์ ๋ ฅ๋ฐ๋ ๋ฐฉ๋ฒ
์๊ณ ๋ฆฌ์ฆ ์๊ฐ
์ผ๋จ, DFS๋ก ์ด ๋ฌธ์ ๋ฅผ ํ ์๋ ์๋ค. DFS๋ ์ด๋ฆ์์ ๊ทธ๋ฌํ๋ฏ, ๊น์ด ์ฐ์ ์ผ๋ก ํ์ํ๊ธฐ ๋๋ฌธ์ด๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ BFS๋ก ํ์ํ๋ฉด์ ํ์ฌ ์์น(x,y)์์๋ถํฐ ๊ฑฐ๋ฆฌ๋ฅผ ๊ธฐ๋กํ์ฌ ๋ง์ง๋ง์ ๊ฑฐ๋ฆฌ ๋ฐฐ์ด์ ๋ง์ง๋ง ์นธ์ธ (n-1,m-1)์ ๊ฐ์ด ์ต์ ๊ฑฐ๋ฆฌ ์ ๋ต์ด ๋๋ค.
Q. ์ฌ๋ฌ๋ฒ BFS ํ์์ ํ๊ณ , ๊ทธ์ค (n-1,m-1) ์ ์ด๋ฅด๋ ๊ฐ์ด ๊ฐ์ฅ ์์ BFS๋ฅผ ์ฐพ๋ ๊ฒ ์๋๊ฐ?
A. BFS๋ ํ๋ฒ์ ์,ํ,์ข,์ฐ์ ์ธ์ ํด์๋ ๋ ธ๋๋ค์ ํ์ ๋ฃ๋๋ค. n๋ฒ์ ๊ฑธ์ณ ํ์ ๋ ธ๋๋ฅผ ๋ฃ๋๋ค๋ฉด ๊ฑฐ๋ฆฌ๊ฐ n์ธ ๋ ธ๋๋ผ๊ณ ํ ์ ์๋ค. (0,0)์์ (x,y)๊น์ง ์ด๋ฅด๋ ๊ฑฐ๋ฆฌ๊ฐ์ 2์ฐจ์ ๋ฐฐ์ด์ ์ ์ฅํ๋ค๋ฉด (x,y)๊น์ง์ ์ต์ ๊ฑฐ๋ฆฌ๊ฐ ๋๋ค!