๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์•Œ๊ณ ๋ฆฌ์ฆ˜/๋ฐฑ์ค€

[๋ฐฑ์ค€] 16137๋ฒˆ ๊ฒฌ์šฐ์™€ ์ง๋…€ ๊ณจ๋“œ2 - ์ž๋ฐ”(JAVA) / ์‹œ๋ฎฌ๋ ˆ์ด์…˜/ BFS

๐Ÿ“‘ ๋ฌธ์ œ

https://www.acmicpc.net/problem/16137

 

16137๋ฒˆ: ๊ฒฌ์šฐ์™€ ์ง๋…€

๊ฒฌ์šฐ์™€ ์ง๋…€๋Š” ์—ฌ๋Ÿฌ ์„ฌ๊ณผ ์ ˆ๋ฒฝ์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ์ง€์—ญ์—์„œ ์‚ด๊ณ  ์žˆ๋‹ค. ์ด ์ง€์—ญ์€ ๊ฒฉ์ž๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ƒํ•˜์ขŒ์šฐ๋กœ ์ธ์ ‘ํ•œ ์นธ์œผ๋กœ ๊ฐ€๋Š” ๋ฐ 1๋ถ„์ด ๊ฑธ๋ฆฐ๋‹ค. 7์›” 7์ผ์€ ๊ฒฌ์šฐ์™€ ์ง๋…€๊ฐ€ ์˜ค์ž‘๊ต๋ฅผ ๊ฑด๋„ˆ

www.acmicpc.net

๋”๋ณด๊ธฐ

๋ฌธ์ œ

๊ฒฌ์šฐ์™€ ์ง๋…€๋Š” ์—ฌ๋Ÿฌ ์„ฌ๊ณผ ์ ˆ๋ฒฝ์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ์ง€์—ญ์—์„œ ์‚ด๊ณ  ์žˆ๋‹ค. ์ด ์ง€์—ญ์€ ๊ฒฉ์ž๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ƒํ•˜์ขŒ์šฐ๋กœ ์ธ์ ‘ํ•œ ์นธ์œผ๋กœ ๊ฐ€๋Š” ๋ฐ 1๋ถ„์ด ๊ฑธ๋ฆฐ๋‹ค.

7์›” 7์ผ์€ ๊ฒฌ์šฐ์™€ ์ง๋…€๊ฐ€ ์˜ค์ž‘๊ต๋ฅผ ๊ฑด๋„ˆ ๋งŒ๋‚  ์ˆ˜ ์žˆ๋Š” ๋‚ ์ด๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๊ณ ๋ นํ™”๋กœ ์ธํ•ด์„œ ๊นŒ๋งˆ๊ท€์™€ ๊นŒ์น˜๊ฐ€ ์˜ˆ์ „์ฒ˜๋Ÿผ ์ปค๋‹ค๋ž€ ์˜ค์ž‘๊ต๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์—†๋‹ค. ๊ทธ๋ž˜์„œ ์š”์ฆ˜์€ ์ผ๋ถ€ ์ ˆ๋ฒฝ์—๋งŒ ๋‹ค๋ฆฌ๋ฅผ ๋งŒ๋“ค์–ด ์ฃผ๊ณ  ์žˆ๊ณ , ๊ทธ๋งˆ์ €๋„ ํž˜๋“ค์–ด์„œ ๋ช‡ ๋ถ„ ์ฃผ๊ธฐ๋กœ ์˜ค์ž‘๊ต๋ฅผ ์ง“๊ณ  ํ•ด์ฒดํ•˜๋Š” ์ž‘์—…์„ ๋ฐ˜๋ณตํ•ด์•ผ ํ•œ๋‹ค. ํ•œ ๋ฒˆ ์ง€์€ ์˜ค์ž‘๊ต๋Š” 1๋ถ„ ๋™์•ˆ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ์˜ค์ž‘๊ต๊ฐ€ 3๋ถ„๊ณผ 4๋ถ„ ์ฃผ๊ธฐ๋ผ๋ฉด, ๊ฑด๋„ ์ˆ˜ ์žˆ๋Š” ์‹œ๊ฐ„์€ ์•„๋ž˜ ๊ทธ๋ฆผ์—์„œ ์ดˆ๋ก์ƒ‰์œผ๋กœ ํ‘œ์‹œํ•œ ๋ถ€๋ถ„๊ณผ ๊ฐ™๋‹ค.

   
T = 3 T = 4

์˜ค์ž‘๊ต๋Š” ์ด์ฒ˜๋Ÿผ ๋งค์šฐ ๋ถˆ์•ˆ์ •ํ•˜๋ฏ€๋กœ, ๊ฒฌ์šฐ๋Š” ์•ˆ์ „์„ ์œ„ํ•ด ๋‘ ๋ฒˆ ์—ฐ์†์œผ๋กœ ์˜ค์ž‘๊ต๋ฅผ ๊ฑด๋„ˆ์ง€๋Š” ์•Š๊ธฐ๋กœ ํ–ˆ๋‹ค.

๊นŒ๋งˆ๊ท€์™€ ๊นŒ์น˜๋Š” ์กฐ๊ธˆ์ด๋ผ๋„ ๊ฒฌ์šฐ๋ฅผ ๋” ๋„์™€์ฃผ๊ธฐ ์œ„ํ•ด, ์ ˆ๋ฒฝ์„ ์ •ํ™•ํžˆ ํ•˜๋‚˜ ๊ณจ๋ผ ์ฃผ๊ธฐ๊ฐ€ M๋ถ„์ธ ์˜ค์ž‘๊ต๋ฅผ ํ•˜๋‚˜ ๋” ๋†“์•„ ์ฃผ๊ธฐ๋กœ ํ–ˆ๋‹ค. ๋‹จ, ์ด๋ฏธ ์˜ค์ž‘๊ต๋ฅผ ์ง“๊ธฐ๋กœ ์˜ˆ์ •ํ•œ ์ ˆ๋ฒฝ์—๋Š” ์˜ค์ž‘๊ต๋ฅผ ํ•˜๋‚˜ ๋” ๋†“์„ ์ˆ˜ ์—†๊ณ , ์•„๋ž˜์™€ ๊ฐ™์ด ์ ˆ๋ฒฝ์ด ๊ฐ€๋กœ์™€ ์„ธ๋กœ๋กœ ๊ต์ฐจํ•˜๋Š” ๊ณณ์—๋„ ์˜ค์ž‘๊ต๋ฅผ ๋†“์„ ์ˆ˜ ์—†๋‹ค.

๊ฒฌ์šฐ๊ฐ€ ์ง๋…€์—๊ฒŒ ๋„์ฐฉํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ์†Œ์˜ ์‹œ๊ฐ„์„ ์ฐพ์•„ ๋ณด์ž.

 

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ์ง€ํ˜•์˜ ํ–‰๊ณผ ์—ด์˜ ํฌ๊ธฐ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ •์ˆ˜ N (2 ≤ N ≤ 10)๊ณผ ์ƒˆ๋กœ ๋งŒ๋“ค์–ด์ง€๋Š” ์˜ค์ž‘๊ต์˜ ์ฃผ๊ธฐ๋ฅผ ์˜๋ฏธํ•˜๋Š” ์ •์ˆ˜ M(2 ≤ M ≤ 20)์ด ์ฃผ์–ด์ง„๋‹ค.

๋‹ค์Œ N๊ฐœ์˜ ์ค„์—๋Š” ์ค„๋งˆ๋‹ค ๋ฐฐ์—ด์˜ ๊ฐ ํ–‰์„ ๋‚˜ํƒ€๋‚ด๋Š” N๊ฐœ์˜ ์ •์ˆ˜๊ฐ€ ํ•œ ๊ฐœ์˜ ๋นˆ์นธ์„ ์‚ฌ์ด์— ๋‘๊ณ  ์ฃผ์–ด์ง„๋‹ค. ๊ฐ ์นธ์— ๋“ค์–ด๊ฐ€๋Š” ๊ฐ’์€ 0 ์ด์ƒ 20 ์ดํ•˜์ด๋‹ค.

๋˜ํ•œ, ๊ฐ ์นธ์— ๋“ค์–ด๊ฐ€๋Š” ์ •์ˆ˜์˜ ์˜๋ฏธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • 1: ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” ์ผ๋ฐ˜์ ์ธ ๋•…
  • 0: ๊ฑด๋„ ์ˆ˜ ์—†๋Š” ์ ˆ๋ฒฝ
  • 2 ์ด์ƒ์˜ ์ˆ˜: ์ ํ˜€์žˆ๋Š” ์ˆ˜ ๋งŒํผ์˜ ์ฃผ๊ธฐ๋ฅผ ๊ฐ€์ง€๋Š” ์˜ค์ž‘๊ต

๊ฒฌ์šฐ์˜ ์‹œ์ž‘์ ์€ ์ง€ํ˜•์˜ ๋งจ ์™ผ์ชฝ ์œ„ (0, 0) ์ด๊ณ , ์ง๋…€๊ฐ€ ์‚ฌ๋Š” ๊ณณ์€ ์ง€ํ˜•์˜ ๋งจ ์˜ค๋ฅธ์ชฝ ์•„๋ž˜์ธ (N-1, N-1)์ด๋‹ค. ๊ฒฌ์šฐ๊ฐ€ ์‹œ์ž‘์ ์—์„œ ์ถœ๋ฐœํ•˜๋Š” ์‹œ๊ฐ„์€ 0๋ถ„์ด๋‹ค. ๊ฒฌ์šฐ์™€ ์ง๋…€๊ฐ€ ์‚ฌ๋Š” ๊ณณ์€ ์ผ๋ฐ˜์ ์ธ ๋•…์ด๋‹ค.

๊ฒฌ์šฐ์™€ ์ง๋…€๊ฐ€ ๋ฌด์กฐ๊ฑด ๋งŒ๋‚  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ๋งŒ ์ฃผ์–ด์ง„๋‹ค. ๋˜ํ•œ, ์ฃผ์–ด์ง€๋Š” ์ง€ํ˜• ์ •๋ณด์—์„œ ์˜ค์ž‘๊ต๋ฅผ ๋ฐ˜๋“œ์‹œ ํ•˜๋‚˜ ์ด์ƒ ๋†“์„ ์ˆ˜ ์žˆ๋‹ค. ์ ˆ๋ฒฝ์ด ๊ฐ€๋กœ์™€ ์„ธ๋กœ๋กœ ๊ต์ฐจํ•˜๋Š” ์ง€์ ์—๋Š” ์˜ค์ž‘๊ต๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค.

์ถœ๋ ฅ

๊ฒฌ์šฐ๊ฐ€ ์ง๋…€์—๊ฒŒ ๊ฐˆ ์ˆ˜ ์žˆ๋Š” ์ตœ์†Œ์˜ ์‹œ๊ฐ„์„ ์ถœ๋ ฅํ•œ๋‹ค.

 

 

 

 

 

 

 

 

 

โœ’๏ธ ํ’€์ด

 

๐Ÿ’ก ๋ฌธ์ œ๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ผญ ์งš๊ณ  ๋„˜์–ด๊ฐ€์•ผ ํ•˜๋Š” ํฌ์ธํŠธ๊ฐ€ ์žˆ๋‹ค.

 

 1. ์˜ค์ž‘๊ต๋Š” ์ฃผ๊ธฐ์— ๋งž์ถฐ์„œ๋งŒ ๊ฑด๋„ ์ˆ˜ ์žˆ๋‹ค. ํ˜„์žฌ ์‹œ๊ฐ„์ด T์ดˆ๋ผ๋ฉด, ๋‹ค์Œ ์œ„์น˜๊ฐ€ ์˜ค์ž‘๊ต์ผ ๋•Œ T+1์ดˆ๊ฐ€ ์˜ค์ž‘๊ต์˜ ์ฃผ๊ธฐ์™€ ๋งž์•„์•ผ ๊ฑด๋„ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค. ๋”ฐ๋ผ์„œ ํ˜„์žฌ ์œ„์น˜์—์„œ ์˜ค์ž‘๊ต๋กœ ๊ฑด๋„ˆ๊ฐ€๋ ค ํ•  ๋•Œ, (T+1)%(์˜ค์ž‘๊ต ์ฃผ๊ธฐ)๊ฐ€ 0์ด ๋˜์–ด์•ผ ๊ฑด๋„ ์ˆ˜ ์žˆ๋‹ค.

 

 2. ์ฃผ๊ธฐ๊ฐ€ ๋งž์ง€ ์•Š๋”๋ผ๋„, ๊ธฐ๋‹ค๋ ธ๋‹ค๊ฐ€ ๊ฑด๋„ˆ๋Š” ๋ฐฉ๋ฒ•๋„ ๊ณ ๋ คํ•ด์•ผ ํ•œ๋‹ค.

 

 3. ๋‘ ๋ฒˆ ์—ฐ์† ์˜ค์ž‘๊ต๋ฅผ ๊ฑด๋„ˆ์ง€๋Š” ์•Š๋Š”๋‹ค. ํ˜„์žฌ ์„œ์žˆ๋Š” ์œ„์น˜๊ฐ€ ์˜ค์ž‘๊ต ์œ„๋ผ๋ฉด, ๋‹ค์Œ ์œ„์น˜๋กœ ์˜ค์ž‘๊ต๋ฅผ ๊ณ ๋ฅผ ์ˆ˜ ์—†๋‹ค.

 

 4 ์ ˆ๋ฒฝ์ด ๊ต์ฐจํ•˜๋Š” ์ผ€์ด์Šค๋Š” ๋ฏธ๋ฆฌ ์ฒดํฌํ•˜์—ฌ ์•„์˜ˆ ์ด๋™์‹œ ๊ณ ๋ คํ•˜์ง€ ์•Š๋„๋ก ์ฒ˜๋ฆฌํ•œ๋‹ค. ์ฝ”๋“œ์—์„œ๋Š” ๊ฐ’์„ -1๋กœ ๋„ฃ์–ด์ฃผ์—ˆ๋‹ค. ์ผ๋ฐ˜ ๋•…(1), ์ ˆ๋ฒฝ(0), ์˜ค์ž‘๊ต(2 ์ด์ƒ์˜ ๊ฐ’)์œผ๋กœ ํ‘œํ˜„๋˜๋ฏ€๋กœ -1๋กœ ์ฒ˜๋ฆฌํ•œ ๊ต์ฐจ์ง€์—ญ์€ ์ฝ”๋“œ ์ง„ํ–‰์‹œ ๊ณ ๋ ค๋˜์ง€ ์•Š๋Š”๋‹ค.

 

 5. ๋‹ค์Œ ์œ„์น˜๊ฐ€ ์ ˆ๋ฒฝ์ด๋ผ๋„, ์ƒˆ ์˜ค์ž‘๊ต๋ฅผ ์•„์ง ๋†“์ง€ ์•Š์€ ๊ฒฝ์šฐ์— ํ•œํ•ด ๊ทธ ์ ˆ๋ฒฝ์— ์˜ค์ž‘๊ต๋ฅผ ์ƒˆ๋กœ ์„ค์น˜ํ•˜๊ณ  ๋„˜์–ด๊ฐˆ ์ˆ˜ ์žˆ๋‹ค. ๋งฅ๋ฝ ์ƒ์œผ๋กœ๋Š” ์‹œ์ž‘ ์‹œ์— ์ ˆ๋ฒฝ ์ค‘ ํ•œ ๊ณณ์„ ๊ณจ๋ผ ์ƒˆ ์˜ค์ž‘๊ต๋ฅผ ๋จผ์ € ์„ค์น˜ํ•ด๋‘๊ณ  ์ถœ๋ฐœํ•˜์ง€๋งŒ, ์–ด๋Š ๊ณณ์— ๋†“๋Š” ๊ฒƒ์ด ์ตœ์ ์ธ์ง€ ๋ฐ”๋กœ ๊ณ ๋ คํ•  ์ˆ˜ ์—†๋‹ค. ๋”ฐ๋ผ์„œ ์ผ๋‹จ ์ถœ๋ฐœ์„ ํ•˜๊ณ , ์˜ค์ž‘๊ต๋ฅผ ์„ค์น˜ํ•œ ๊ฒฝ์šฐ/ ์„ค์น˜ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ์˜ ์ผ€์ด์Šค๋ฅผ ๋ชจ๋‘ ๋“ค๊ณ  ๋‹ค๋‹ˆ๋ฉฐ, ์˜ค์ž‘๊ต๋ฅผ ์•„์ง ์„ค์น˜ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ์— ์ ˆ๋ฒฝ์„ ๋งŒ๋‚˜๋ฉด ๊ทธ๋•Œ ๊ทธ ๊ณณ์— ์˜ค์ž‘๊ต๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ๊ณ  ๊ทธ ์œ„๋ฅผ ๊ฑด๋„Œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ณ  ๋„˜์–ด๊ฐ€๋Š” ๊ฒƒ์ด๋‹ค. ์ด ๋•Œ ์ฃผ๊ธฐ๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ๋ฐฉ๋ฒ•์€ 1๋ฒˆ์„ ๋”ฐ๋ฅธ๋‹ค.

 

 6. ์ง๋…€์˜ ์œ„์น˜์— ๋„์ฐฉํ•˜๋ฉด ๋ฐ”๋กœ ๋ฆฌํ„ดํ•œ๋‹ค.

 

 

 

 

๐Ÿ“‘ ์ •๋ฆฌ

 โœ”๏ธ ์ง€๋„๋ฅผ ์ž…๋ ฅ๋ฐ›์€ ํ›„, ๊ต์ฐจ์ง€์—ญ์„ ์ฒดํฌ ๋ฐ ์ฒ˜๋ฆฌ(-1์„ ์ €์žฅ)ํ•ด๋†“๋Š”๋‹ค.

 โœ”๏ธ BFS ํƒ์ƒ‰์„ ์‹œ์ž‘ํ•œ๋‹ค.

 โœ”๏ธ ์‚ฌ๋ฐฉํƒ์ƒ‰ ์‹œ ์•„๋ž˜ ์ˆœ์„œ๋Œ€๋กœ ๊ณ ๋ คํ•œ๋‹ค.

    (1) ๋‹ค์Œ ์œ„์น˜๊ฐ€ ๋•…์ผ ๋•Œ: ๋„˜์–ด๊ฐ„๋‹ค.

    (2) ๋‹ค์Œ ์œ„์น˜๊ฐ€ ์˜ค์ž‘๊ต ์œ„์ผ ๋•Œ:

         -1) ํ˜„์žฌ ์œ„์น˜๊ฐ€ ๋•…์ผ ๊ฒฝ์šฐ: ์ฃผ๊ธฐ์— ๋งž์œผ๋ฉด ๋‹ค์Œ ์œ„์น˜๋กœ, ๋งž์ง€ ์•Š์œผ๋ฉด ๋Œ€๊ธฐ๋ฅผ ์œ„ํ•ด ํ˜„์žฌ ์œ„์น˜๋ฅผ ํ์— ๋„ฃ๋Š”๋‹ค.

         -2) ํ˜„์žฌ ์œ„์น˜๊ฐ€ ์˜ค์ž‘๊ต ์œ„์ผ ๊ฒฝ์šฐ: ๋„˜์–ด๊ฐ€์ง€ ์•Š๋Š”๋‹ค.

    (3) ๋‹ค์Œ ์œ„์น˜๊ฐ€ ์ ˆ๋ฒฝ์ผ ๋•Œ:

         -1) ์ด๋ฏธ ์ƒˆ ์˜ค์ž‘๊ต๋ฅผ ์„ค์น˜ํ•ด์„œ ๋„˜์–ด์˜จ ์ ์ด ์žˆ๋Š” ๊ฒฝ์šฐ: ๋„˜์–ด๊ฐ€์ง€ ์•Š๋Š”๋‹ค.

         -2) ์ƒˆ ์˜ค์ž‘๊ต๋ฅผ ์„ค์น˜ํ•œ ์ ์ด ์—†๋Š” ๊ฒฝ์šฐ: ์˜ค์ž‘๊ต๋ฅผ ์„ค์น˜ํ–ˆ๋‹ค๊ณ  ๊ณ ๋ คํ•˜๊ณ  (2)๋ฒˆ์œผ๋กœ ๊ฐ„๋‹ค.

 

 

 

 

 

 

 

 

 

๐Ÿ’ป ์†Œ์Šค์ฝ”๋“œ: ์ž๋ฐ”(Java)

public class Main_๋ฐฑ์ค€_16137_๊ฒฌ์šฐ์™€์ง๋…€_๊ณจ๋“œ2 {

	/**
	 * ์˜ค์ž‘๊ต ์ฃผ๊ธฐ ์žˆ์Œ = T%์ฃผ๊ธฐ==0์ด์–ด์•ผ ๊ฑด๋„ ์ˆ˜ ์žˆ๋‹ค. ๊ฑด๋„ˆ๋Š”๋ฐ 1์ดˆ
	 * ๋‘ ๋ฒˆ ์—ฐ์†์œผ๋กœ ์˜ค์ž‘๊ต๋ฅผ ๊ฑด๋„ˆ์ง€๋Š” ์•Š๋Š”๋‹ค = ์ด๋ฏธ ์˜ค์ž‘๊ต ์œ„๋ฉด ๋˜ ์˜ค์ž‘๊ต ์œ„๋กœ ๊ฐ€์ง€ ์•Š๋Š”๋‹ค.
	 * 
	 * visited[r][c][k]: k=0(์ƒˆ๋กœ ๋†“์€ ์˜ค์ž‘๊ต๊ฐ€ ์—†์Œ) or 1(์ƒˆ๋กœ ์˜ค์ž‘๊ต ๋†“๊ณ  ๊ฑด๋„˜)
	 * 1. BFS
	 * 2. ํ˜„์žฌ ์œ„์น˜๊ฐ€ ์˜ค์ž‘๊ต ์œ„๊ฐ€ ์•„๋‹ˆ๊ณ (1) ๊ฑด๋„ ์ˆ˜ ์žˆ๋Š” ์˜ค์ž‘๊ต๊ฐ€ ์žˆ์œผ๋ฉด ๊ฑด๋„Œ๋‹ค.
	 * 3. ์ƒˆ๋กœ ์˜ค์ž‘๊ต๋ฅผ ๋†“์„ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ ๋†“๊ณ  ๊ฑด๋„Œ๋‹ค.
	 * 4. ์ง๋…€์—๊ฒŒ ๋„์ฐฉํ•˜๋ฉด ์ตœ์†Œ์‹œ๊ฐ„์„ ๋ฆฌํ„ดํ•œ๋‹ค.
	 * */
	
	static int N, M, result = Integer.MAX_VALUE;
	static int[][] map;
	static boolean[][][] visited;
	static int[] dr = {1, -1, 0, 0};
	static int[] dc = {0, 0, 1, -1};
	
	public static void main(String[] args) throws IOException{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine());
		N = Integer.parseInt(st.nextToken());
		M = Integer.parseInt(st.nextToken());
		map = new int[N][N];
		visited = new boolean[N][N][2];
		
		for (int i = 0; i < N; i++) {
			st = new StringTokenizer(br.readLine());
			for (int j = 0; j < N; j++) {
				map[i][j] = Integer.parseInt(st.nextToken());
			}
		}//input
		
		findCross();
		bfs();
		System.out.println(result);
	}//end of main
	
	private static void findCross() {
		
		int cnt = 0;
		for (int r = 0; r < N; r++) {
			for (int c = 0; c < N; c++) {
				if(map[r][c]==0) {	// ์ ˆ๋ฒฝ์ผ ๋•Œ
					cnt=0;
					// ์ขŒ์ƒ/ ์ขŒํ•˜/ ์šฐ์ƒ/ ์šฐํ•˜
					if((r-1>=0 && map[r-1][c]==0) || (r+1<N && map[r+1][c]==0)) cnt++;
					if((c-1>=0 && map[r][c-1]==0) || (c+1<N && map[r][c+1]==0)) cnt++;
					if(cnt==2) map[r][c]=-1;
				}
			}
		}
	}
	
	private static void bfs() {
		Queue<int[]> queue = new LinkedList<int[]>();
		queue.offer(new int[] {0,0,0,0});//r,c,k,t
		visited[0][0][0] = true;
		
		while(true) {
			int[] cur = queue.poll();
			int r = cur[0];
			int c = cur[1];
			int k = cur[2];
			int t = cur[3];
			int nr, nc, nt=t+1;
			
			if(r==N-1 && c==N-1) {
				result = t;
				break;
			}
			
			for (int i = 0; i < 4; i++) {
				nr = r + dr[i];
				nc = c + dc[i];
				
				if(nr<0||nc<0||nr>=N||nc>=N||visited[nr][nc][k]) continue;
				
				if(map[nr][nc]==1) { // ๋‹ค์Œ ์œ„์น˜๊ฐ€ ๋•…์ผ ๋•Œ
					visited[nr][nc][k] = true;
					queue.offer(new int[] {nr, nc, k, nt});
				}
				if(map[nr][nc]>1) { // ๋‹ค์Œ ์œ„์น˜๊ฐ€ ์˜ค์ž‘๊ต ์œ„์ผ ๋•Œ
					if(map[r][c]==1) {// ํ˜„์žฌ ์œ„์น˜๊ฐ€ ๋•…์ด์–ด์•ผ๋งŒ ์ด๋™๊ฐ€๋Šฅ
						if(nt%map[nr][nc]==0) {// ์ด๋™๊ฐ€๋Šฅํ•˜๋ฉด
							queue.offer(new int[] {nr, nc, k, nt});
						}else {
							queue.offer(new int[] {r, c, k, nt});
						}
					}
				}
				if(map[nr][nc]==0 && k==0) { // ๋‹ค์Œ ์œ„์น˜๊ฐ€ ๋•…์ผ ๋•Œ
					if(nt%M==0) queue.offer(new int[] {nr,nc,k+1,nt});
					else queue.offer(new int[] {r,c,k,nt});
				}
			}
		}
	}
}//end of class

 

 

 

 

 

 

 

 

 

 

๐Ÿ’Ž ๐Ÿ’Ž ๐Ÿ’Ž

 

 

๏ผฐ๏ฝ๏ฝ“๏ฝ”๏ฝ…๏ฝ„ ๏ผข๏ฝ™ ๏ผณ๏ผก๏ผน

๐˜›๐˜ฉ๐˜ข๐˜ฏ๐˜ฌ๐˜ด ๐˜ง๐˜ฐ๐˜ณ ๐˜ณ๐˜ฆ๐˜ข๐˜ฅ๐˜ช๐˜ฏ๐˜จ