๋ฑ
Last updated
Last updated
โผ๏ธ๋๋ฒ๊น ํ ๋ ์์ผ๋ก ์์ญ๊ฐ ๋ฐฐ์ด ๊ทธ๋ ค๊ฐ๋ฉด์ ํ์ง๋ง๊ณ ์ค๋งํธํ๊ฒ ํ์~! ์๋ํฐ ๋๋ฒ๊น ๋๋ฆฌ๊ธฐ!!! ์ค์ ์ํ์ฅ ๊ฐ์๋ ์ค๋ต ๋์ฌ ๊ฒฝ์ฐ, ์์์ ์ผ๋ก ํ๋ํ๋ ๊ทธ๋ ค๊ฐ๋ฉด์ ํ ์ ์๋ค!!!
ํ๋ฆฐ ์ด์
์๊ฐ ์ฆ๊ฐ ์ ํ ์ฐ์ฐ ์์
๋ฑ์ด ์ด๋ํ๋ ๋ฐฉํฅ์ผ๋ก ๋จธ๋ฆฌ ์์น๋ง ์ ์ฅํด๋ฒ๋ฆผ.=>"๊ผฌ๋ฆฌ ์์น" ์ ๋ณด ์ ์ฅ ํ์์ฑ ๋ชป ๋๋..
๋ฐฉํฅ ์ ๋ณด ์ ์ฅ ์๋ฃ๊ตฌ์กฐ : ์ปฌ๋ ์ ์ ๋ถ์ ์ ํ ๋ฏํ๋ค
๋ค์ ์ด๋ ์ขํ๊ฐ ๋ฒฝ์ธ์ง, ๋ฑ์ธ์ง ํ์ธํ ๋ ์กฐ๊ฑด ๊ฒ์ฌ ์์ ์ค์!!!!โญ๏ธโญ๏ธโญ๏ธโญ๏ธโญ๏ธ => ๋ฒฝ์ผ ๋ : (nx,ny) ๋ ๋ฒ์ ์ด๊ณผ! => ๋ฑ์ผ ๋ : Map[nx][ny] == 1 (nx,ny)๊ฐ ๋ฒ์ ์ด๊ณผ์ธ๋ฐ Map[nx][ny] == 1 ์กฐ๊ฑด์ ๋จผ์ ํด๋ฒ๋ฆฌ๋ฉด ๋น์ฐํ ๋ฐฐ์ด ๋ฒ์ ์ด๊ณผ ์๋ฌ๊ฐ ๋๋ค!!! ๊ทธ๋์ ๋ฒ์ ์ฒดํฌ๋ฅผ ํ์์ ์ผ๋ก ๋จผ์ ํด์ฃผ๊ณ , Map ๊ฐ ์ฒดํฌ๋ฅผ ํด์ค์ผํ๋ค! ์ ๋ต ์ฝ๋์์๋ 2๊ฐ์ if๋ฌธ์ผ๋ก ๋ฒ์ ์ฒดํฌ๋ฅผ ๋จผ์ ํด์ฃผ์๋ค. ๋ด ์ฝ๋์์๋ ํ๋์ if๋ฌธ ๋ด์์ Map๊ฐ๊ณผ ๋ฒ์ ์ฒดํฌ ์กฐ๊ฑด ๊ฒ์ฌ๋ฅผ OR(||)๋ก ํ๋ฒ์ ํด์ฃผ์๋๋ฐ, ์ฌ๊ธฐ์ ํ๋ ธ๋ค! ์์ ๊ฐ์ ์ด์ ๋ก, ํ๋์ if๋ฌธ์์ OR์กฐ๊ฑด์ผ๋ก ๋ ๊ฐ์ง ์กฐ๊ฑด์ ๊ฒ์ฌํ๋๋ผ๋ ๋ฐฐ์ด ๋ฒ์ ์ฒดํฌ ์กฐ๊ฑด์ ๊ฐ์ฅ ์ผ์ชฝ์ ๋จผ์ ์์น์์ผ์ผ ํ๋ค!!!!!!! if(Map[nx][ny] == 1 || check(nx,ny)) โ if(check(nx,ny) || Map[nx][ny])โ
์๊ฐ ์ฆ๊ฐ ์ ํ ์ฐ์ฐ ์์
์๊ฐ์ด ์ฆ๊ฐํ๊ธฐ ์ ์ฐ์ฐ๊ณผ ์ฆ๊ฐํ๊ณ ๋ ํ ์ฐ์ฐ์ด ํท๊ฐ๋ ธ๋ค.
๋ฑ์ด ๋ฒฝ์ด๋ ์์ ์ ๋ชธ์ ๋ถ๋ชํ๊ธฐ ์ ์ ๊ณ์ํด์ ์ด๋ํ๋ ๊ฒ์ ๋ฐ๋ณตํ๋๋ฐ ์ด ๋ฌดํ๋ฃจํ ์์์ ์๊ฐ t๋ฅผ ์ฆ๊ฐ์์ผฐ๋ค. t๋ฅผ 1 ์ฆ๊ฐ์์ผฐ๊ธฐ ๋๋ฌธ์ ๋ ผ๋ฆฌ์ ์ผ๋ก ๋ฑ์ ๋ค์ ์นธ์ผ๋ก ์ด๋์ ํ ๊ฒ์ด๋ค!
๋ฐ๋ผ์ t++; ์ดํ์ ๋ค์ ์ขํ๋ฅผ ๊ณ์ฐํ ๋์๋ ์ด๋ฏธ ๊ทธ ์นธ์ ์์นํ ๊ฒ์ด๋ฏ๋ก ๊ณ์ฐํ (nx,ny)๊ฐ ๋ฒฝ์ด๊ฑฐ๋ ๋ฑ์ด๋ผ๋ฉด ํ์ฌ์ t๋ฅผ ๋ฆฌํดํ๋ฉด๋๋ค! => t๋ฅผ 1 ์ฆ๊ฐ์์ผ๋๊ณ ๋ค์ t+1์ ๋ฆฌํดํ ๋ถ๋ถ ํ๋ฆผ
2. ๋ฑ์ด ์ด๋ํ๋ ๋จธ๋ฆฌ ์์น ๋ฟ๋ง ์๋๋ผ ๊ผฌ๋ฆฌ ์์น๋ ์ ์ฅํด์ผ ํ๋ค!!!
๋ค์ ์ขํ์ ์ฌ๊ณผ ์ ๋ฌด์ ๋ฐ๋ผ ๊ผฌ๋ฆฌ ์์น ์ ๋ฐ์ดํธ ์ฒ๋ฆฌ
์ฌ๊ณผ ์๋ ์นธ์ผ ๋ : ๊ผฌ๋ฆฌ ์์น ๋ฐ๋ก ์ฒ๋ฆฌX ์ฌ๊ณผ ์๋ ์นธ์ผ ๋ : ํ์ฌ ๊ผฌ๋ฆฌ ์์น 0์ผ๋ก ๋ง๋ ๋ค.โญ๏ธโญ๏ธโญ๏ธโญ๏ธโญ๏ธ
์ ๋ต ์์ค์ ๊ฐ์ฅ ํฐ ์ฐจ์ด์ ์ ๋ต : ๋ฑ์ ์ ๋ณด ์ ์ฅ(deque ๋๋ ๋ฐฐ์ด) ๋ด ์ฝ๋ : nx,ny๋ง์ผ๋ก ๋ค์ ์ขํ๋ฅผ ์ ์ฅํ๊ณ ์๋ค. ๋ฑ์ด ํ์นธ์ฉ ํ์ฌ ๋ฐฉํฅ์์ ์ด๋ํ ๋, Map์ 1๋ก ๋งํน๋ง ํด์ฃผ๋ฉด ๋๋ค๊ณ ์๊ฐํ๋ค. ๋ค์ ์ด๋ํ ์นธ์ด ์ฌ๊ณผ๊ฐ ์๋ ๋ ํ์ฌ ๊ผฌ๋ฆฌ ์์น 0์ผ๋ก ๋ง๋ค์ด์ค์ผํ์ง๋ง ํ์ฌ ๋ด์ฝ๋์์๋ (sx,sy), (nx,ny) ์ฆ, ๋ฑ์ด ์ด๋ํ๋ "๋จธ๋ฆฌ" ์์น๋ง ์ ์ฅํ๊ณ ์๋ ๊ฒ์ด ๋ฌธ์ ๋ค. =>๋ค์ ์ด๋ํ ์นธ์ด ์ฌ๊ณผ๊ฐ ์๋ ์นธ์ด๋ฉด ๊ผฌ๋ฆฌ ์์น ๊ทธ๋๋ก, ์ด๋ํ๋ฉด ๋๋ค. ๋ฑ ๊ธธ์ด ๋์ด๋๋ ์๋ฏธ. ๋ค์ ์ด๋ํ ์นธ์ด ์ฌ๊ณผ๊ฐ ์๋๋ฉด ํ์ฌ ๊ผฌ๋ฆฌ ์์น๋ฅผ 0์ผ๋ก ๋ง๋ค์ด์ฃผ๊ณ , ๋ชธ ๊ธธ์ด ๋ณํ์ง ์๋๋ค๊ณ ํ๋ค. ์ฆ, ์ด๋๋ง ํ๋ค๋ ๊ฒ์ด๋ค!
๋ฐ๋ผ์ ๋ฑ์ ๋จธ๋ฆฌ ์์น, ๊ผฌ๋ฆฌ ์์น๋ฅผ ์ ์ฅํด์ค์ผํ๊ณ , ์ฌ๊ธฐ์๋ ๋ฑ์ผ๋ก ์ ์ฅํ๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ค!
3. ๋ฐฉํฅ ์ ๋ณด ์ปฌ๋ ์ ์ ์ ์ฅํ๋ฉด ์๊ธฐ๋ ๋ชจ์์ =>์ปฌ๋ ์ ์ ์ ์ฅํ ๊ฒ์ด ์๋ชป๋ ๊ฒ์ด ์๋๋ผ ์ปฌ๋ ์ ์ ์์๋ฅผ ์กฐํํ๊ณ ์ญ์ ํ๋ ๋ก์ง ์์๊ฐ ์๋ชป๋์๊ณ , ๋ฌธ์๋ฅผ ๋น๊ตํ ๋ '=='๋ฅผ ์จ์ ํ๋ ธ๋ค. '=='์ ์ฃผ์๊ฐ ๋น๊ต์ด๊ธฐ ๋๋ฌธ์ ๋ฌธ์ ๋น๊ต ์์๋ ๋ฐ๋์ equals()๋ฅผ ์ฐ๋๋ก ํ๋ค!!!!!!
์ํ๋ ๋์ : ํ์ฌ time์์ ๋ฑ์ ์ด๋์ํจ ํ์ 0๋ฒ์งธ ์ปฌ๋ ์ ์์๋ก time๊ณผ dir ๊ฐ์ ์กฐํํด์ ํ์ฌ time์์ ๋ฐฉํฅ ์ ํ ์ ๋ณด๊ฐ ์๋์ง ํ์ธํ๊ณ , ์๋ค๋ฉด ๋ฐฉํฅ ์ ํ์ํจ๋ค.
0๋ฒ์งธ ์์ ์กฐํ ํ์๋ ์ญ์ ํ์ฌ ๋ค์ ๋ฐฉํฅ ์ ๋ณด๋ฅผ ์ ์ผ ์ฒซ๋ฒ์งธ์ธ 0๋ฒ์งธ ์์๋ก ๊ฐฑ์ ํ๋ค.
ํ์ง๋ง ์๋ ์ฝ๋๋ฅผ ๋ณด๋ฉด ๋จผ์ ์ปฌ๋ ์ ์ ํฌ๊ธฐ๊ฐ ์์์ธ์ง ํ์ธํ๊ณ , ์์์ด๋ฉด 0๋ฒ์งธ ์์๋ฅผ ์ญ์ ํ์ฌ ์กฐํํ๋ค. ๊ทธ ํ์ ์กฐํํ ์์์ time๊ณผ ํ์ฌ์ t๊ฐ ๋์ผํ์ง ํ์ธํ๊ณ ๋์ผํ๋ค๋ฉด ๋ฐฉํฅ ์ ํ์ ํ๋ ๊ฒ์ธ๋ฐ, 0๋ฒ์งธ ์์๋ฅผ ๋จผ์ ์ญ์ ํด๋ฒ๋ฆฌ๊ณ ์กฐํํ๋ค๊ฐ ๋์ผํ์ง ์์ผ๋ฉด ์ญ์ ํ๋ ๋ฐฉํฅ ์ ๋ณด์ time์ด ๋์ ๋ ๊ทธ์ ํด๋นํ๋ ๋ฐฉํฅ ์ ๋ณด๊ฐ ์ฌ๋ผ์ ธ๋ฒ๋ฆฌ๊ฒ ๋๋ค!
์์ผ ์ฝ๋๋ฅผ ์์ ํด์ ์๋์ฒ๋ผ ์์ ํด๋ดค๋ค. ๋ค์ ์ด๋ํ ์นธ์ด ์ฌ๊ณผ๊ฐ ์๋ ๋, Map[q.pollLast().x][q.pollLast().y] = 0; ์์ NullPointerExeception์ด ๋ฐ์ํ๋ค.. why..why...why... =>์ด๋ฏธ pollLast()๋ฅผ ํด๋ฒ๋ ธ๋๋ฐ ๋ค์ poll()์ฐ์ฐ์ ํด์ NPE๊ฐ ๋ฐ์ํ์ ์ ์๋ค. =>peekLast().x, peekLast().y๋ก ์กฐํํด์ ์ขํ๊ฐ 0์ผ๋ก ๊ฐฑ์ ํ๊ณ , pollLast()๋ก ์ญ์ ํ๋ค!