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

์•Œ๊ณ ๋ฆฌ์ฆ˜/SWEA

[SWEA] 1953๋ฒˆ ํƒˆ์ฃผ๋ฒ” ๊ฒ€๊ฑฐ - ์ž๋ฐ”(JAVA) / ์‹œ๋ฎฌ๋ ˆ์ด์…˜/ BFS

๐Ÿ“‘ ๋ฌธ์ œ

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5PpLlKAQ4DFAUq& 

 

SW Expert Academy

SW ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์—ญ๋Ÿ‰ ๊ฐ•ํ™”์— ๋„์›€์ด ๋˜๋Š” ๋‹ค์–‘ํ•œ ํ•™์Šต ์ปจํ…์ธ ๋ฅผ ํ™•์ธํ•˜์„ธ์š”!

swexpertacademy.com

๋”๋ณด๊ธฐ

๊ต๋„์†Œ๋กœ ์ด์†ก ์ค‘์ด๋˜ ํ‰์•…๋ฒ”์ด ํƒˆ์ถœํ•˜๋Š” ์‚ฌ๊ฑด์ด ๋ฐœ์ƒํ•˜์—ฌ ์ˆ˜์ƒ‰์— ๋‚˜์„ฐ๋‹ค.
ํƒˆ์ฃผ๋ฒ”์€ ํƒˆ์ถœํ•œ ์ง€ ํ•œ ์‹œ๊ฐ„ ๋’ค, ๋งจํ™€ ๋šœ๊ป‘์„ ํ†ตํ•ด ์ง€ํ•˜ํ„ฐ๋„์˜ ์–ด๋Š ํ•œ ์ง€์ ์œผ๋กœ ๋“ค์–ด๊ฐ”์œผ๋ฉฐ,
์ง€ํ•˜ ํ„ฐ๋„ ์–ด๋”˜๊ฐ€์—์„œ ์€์‹  ์ค‘์ธ ๊ฒƒ์œผ๋กœ ์ถ”์ •๋œ๋‹ค.

ํ„ฐ๋„๋ผ๋ฆฌ ์—ฐ๊ฒฐ์ด ๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ ์ด๋™์ด ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ ํƒˆ์ฃผ๋ฒ”์ด ์žˆ์„ ์ˆ˜ ์žˆ๋Š” ์œ„์น˜์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•˜์—ฌ์•ผ ํ•œ๋‹ค.
ํƒˆ์ฃผ๋ฒ”์€ ์‹œ๊ฐ„๋‹น 1์˜ ๊ฑฐ๋ฆฌ๋ฅผ ์›€์ง์ผ ์ˆ˜ ์žˆ๋‹ค.
์ง€ํ•˜ ํ„ฐ๋„์€ ์ด 7 ์ข…๋ฅ˜์˜ ํ„ฐ๋„ ๊ตฌ์กฐ๋ฌผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์œผ๋ฉฐ ๊ฐ ๊ตฌ์กฐ๋ฌผ ๋ณ„ ์„ค๋ช…์€ [ํ‘œ 1]๊ณผ ๊ฐ™๋‹ค.

 

 

[๊ทธ๋ฆผ 1-1] ์€ ์ง€ํ•˜ ํ„ฐ๋„ ์ง€๋„์˜ ํ•œ ์˜ˆ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.

์ด ๊ฒฝ์šฐ ์ง€๋„์˜ ์„ธ๋กœ ํฌ๊ธฐ๋Š” 5, ๊ฐ€๋กœ ํฌ๊ธฐ๋Š” 6 ์ด๋‹ค.
๋งจํ™€ ๋šœ๊ป‘์˜ ์œ„์น˜๊ฐ€ ( 2, 1 ) ์œผ๋กœ ์ฃผ์–ด์งˆ ๊ฒฝ์šฐ, ์ด๋Š” ์„ธ๋กœ ์œ„์น˜ 2, ๊ฐ€๋กœ ์œ„์น˜ 1์„ ์˜๋ฏธํ•˜๋ฉฐ [๊ทธ๋ฆผ 1-2] ์—์„œ ๋ถ‰์€ ์ƒ‰์œผ๋กœ ํ‘œ๊ธฐ๋œ ๊ตฌ์—ญ์ด๋‹ค.
ํƒˆ์ฃผ๋ฒ”์ด ํƒˆ์ถœ ํ•œ ์‹œ๊ฐ„ ๋’ค ๋„๋‹ฌํ•  ์ˆ˜ ์žˆ๋Š” ์ง€์ ์€ ํ•œ ๊ณณ์ด๋‹ค.
ํƒˆ์ฃผ๋ฒ”์ด 2์‹œ๊ฐ„ ํ›„ ๋„๋‹ฌํ•  ์ˆ˜ ์žˆ๋Š” ์ง€์ ์€, [๊ทธ๋ฆผ 1-3] ๊ณผ ๊ฐ™์ด ๋งจํ™€ ๋šœ๊ป‘์ด ์œ„์น˜ํ•œ ๋ถ‰์€ ์ƒ‰์œผ๋กœ ํ‘œ์‹œ๋œ ์ง€ํ•˜๋„ ์™€ ํŒŒ๋ž€์ƒ‰์œผ๋กœ ํ‘œ๊ธฐ๋œ ์ง€ํ•˜๋„๊นŒ์ง€ ์ด 3๊ฐœ์˜ ์žฅ์†Œ์— ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค.
3์‹œ๊ฐ„ ํ›„์—๋Š” [๊ทธ๋ฆผ 1-4] ๊ณผ ๊ฐ™์ด ์ด 5๊ฐœ์˜ ์ง€์ ์— ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค.

 

 

 

[๊ทธ๋ฆผ 2-1] ์—์„œ ๋งจํ™€๋šœ๊ป‘์ด ์œ„์น˜ํ•œ ์ง€์ ์ด ( 2, 2 ) ์ด๊ณ  ๊ฒฝ๊ณผํ•œ ์‹œ๊ฐ„์ด 6 ์œผ๋กœ ์ฃผ์–ด์งˆ ๊ฒฝ์šฐ,
[๊ทธ๋ฆผ 2-2] ์—์„œ ๋งจํ™€๋šœ๊ป‘์ด ์œ„์น˜ํ•œ ์ง€์ ์€ ๋ถ‰์€ ์ƒ‰, ํƒˆ์ฃผ๋ฒ”์ด ์žˆ์„ ์ˆ˜ ์žˆ๋Š” ์žฅ์†Œ๊ฐ€ ํ‘ธ๋ฅธ์ƒ‰์œผ๋กœ ํ‘œ๊ธฐ๋˜์–ด ์žˆ๋‹ค.
ํƒˆ์ฃผ๋ฒ”์ด ์žˆ์„ ์ˆ˜ ์žˆ๋Š” ์žฅ์†Œ๋Š”, ๋งจํ™€๋šœ๊ป‘์ด ์œ„์น˜ํ•œ ์ง€์ ์„ ํฌํ•จํ•˜์—ฌ ์ด 15 ๊ฐœ ์ด๋‹ค.

 

 

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


[์ œ์•ฝ ์‚ฌํ•ญ]
1. ์‹œ๊ฐ„ ์ œํ•œ : ์ตœ๋Œ€ 50๊ฐœ ํ…Œ์ดํŠธ ์ผ€์ด์Šค๋ฅผ ๋ชจ๋‘ ํ†ต๊ณผํ•˜๋Š”๋ฐ, C/C++/Java ๋ชจ๋‘ 1์ดˆ
2. ์ง€ํ•˜ ํ„ฐ๋„ ์ง€๋„์˜ ์„ธ๋กœ ํฌ๊ธฐ N, ๊ฐ€๋กœ ํฌ๊ธฐ M์€ ๊ฐ๊ฐ 5 ์ด์ƒ 50 ์ดํ•˜์ด๋‹ค. (5 ≤ N, M ≤ 50)
3. ๋งจํ™€ ๋šœ๊ป‘์˜ ์„ธ๋กœ ์œ„์น˜ R ์€ 0 ์ด์ƒ N-1์ดํ•˜์ด๊ณ  ๊ฐ€๋กœ ์œ„์น˜ C ๋Š” 0 ์ด์ƒ M-1์ดํ•˜์ด๋‹ค. (0 ≤ R ≤ N-1, 0 ≤ C ≤ M-1)
4. ํƒˆ์ถœ ํ›„ ์†Œ์š”๋œ ์‹œ๊ฐ„ L์€ 1 ์ด์ƒ 20 ์ดํ•˜์ด๋‹ค. (1 ≤ L ≤ 20)
5. ์ง€ํ•˜ ํ„ฐ๋„ ์ง€๋„์—๋Š” ๋ฐ˜๋“œ์‹œ 1๊ฐœ ์ด์ƒ์˜ ํ„ฐ๋„์ด ์žˆ์Œ์ด ๋ณด์žฅ๋œ๋‹ค.
6. ๋งจํ™€ ๋šœ๊ป‘์€ ํ•ญ์ƒ ํ„ฐ๋„์ด ์žˆ๋Š” ์œ„์น˜์— ์กด์žฌํ•œ๋‹ค.

[์ž…๋ ฅ]
์ฒซ ์ค„์— ์ด ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ๊ฐœ์ˆ˜ T๊ฐ€ ์ฃผ์–ด์ง„๋‹ค.
๋‘ ๋ฒˆ์งธ ์ค„๋ถ€ํ„ฐ T๊ฐœ์˜ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๊ฐ€ ์ฐจ๋ก€๋Œ€๋กœ ์ฃผ์–ด์ง„๋‹ค.
๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ์ฒซ ์ค„์—๋Š” ์ง€ํ•˜ ํ„ฐ๋„ ์ง€๋„์˜ ์„ธ๋กœ ํฌ๊ธฐ N, ๊ฐ€๋กœ ํฌ๊ธฐ M, ๋งจํ™€ ๋šœ๊ป‘์ด ์œ„์น˜ํ•œ์žฅ์†Œ์˜ ์„ธ๋กœ ์œ„์น˜ R, ๊ฐ€๋กœ ์œ„์น˜ C, ๊ทธ๋ฆฌ๊ณ  ํƒˆ์ถœ ํ›„ ์†Œ์š”๋œ ์‹œ๊ฐ„ L ์ด ์ฃผ์–ด์ง„๋‹ค.
๊ทธ ๋‹ค์Œ N ์ค„์—๋Š” ์ง€ํ•˜ ํ„ฐ๋„ ์ง€๋„ ์ •๋ณด๊ฐ€ ์ฃผ์–ด์ง€๋Š”๋ฐ, ๊ฐ ์ค„๋งˆ๋‹ค M ๊ฐœ์˜ ์ˆซ์ž๊ฐ€ ์ฃผ์–ด์ง„๋‹ค.
์ˆซ์ž 1 ~ 7์€ ํ•ด๋‹น ์œ„์น˜์˜ ํ„ฐ๋„ ๊ตฌ์กฐ๋ฌผ ํƒ€์ž…์„ ์˜๋ฏธํ•˜๋ฉฐ ์ˆซ์ž 0 ์€ ํ„ฐ๋„์ด ์—†๋Š” ์žฅ์†Œ๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

[์ถœ๋ ฅ]
ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ๊ฐœ์ˆ˜๋งŒํผ T์ค„์— T๊ฐœ์˜ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ๊ฐ๊ฐ์— ๋Œ€ํ•œ ๋‹ต์„ ์ถœ๋ ฅํ•œ๋‹ค.
๊ฐ ์ค„์€ “#x”๋กœ ์‹œ์ž‘ํ•˜๊ณ  ๊ณต๋ฐฑ์„ ํ•˜๋‚˜ ๋‘” ๋‹ค์Œ ์ •๋‹ต์„ ๊ธฐ๋กํ•œ๋‹ค. (x๋Š” 1๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ๋ฒˆํ˜ธ์ด๋‹ค)
์ถœ๋ ฅํ•ด์•ผ ํ•  ์ •๋‹ต์€ ํƒˆ์ฃผ๋ฒ”์ด ์œ„์น˜ํ•  ์ˆ˜ ์žˆ๋Š” ์žฅ์†Œ์˜ ๊ฐœ์ˆ˜์ด๋‹ค.

 

 

 

 

 

 

 

 

 

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

 โœ”๏ธ ํŒŒ์ดํ”„ ๋ฒˆํ˜ธ๋งˆ๋‹ค ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ๋ฐฉํ–ฅ์„ ํ‘œ์‹œํ•œ๋‹ค.

    ์ด๋•Œ ํ‘œ์‹œ๋˜๋Š” ๊ฐ’ x๋Š” ํ˜„์žฌ ์œ„์น˜์—์„œ r+dr[x], c+dc[x]๋ฅผ ํ‘œ์‹œํ•  ๋•Œ์˜ ๋ฐฉํ–ฅ ๊ฐ’์ด๋‹ค.

 

   ์˜ˆ) dr={1, -1, 0, 0} / dc={0,0,1,-1} >> ์ƒํ•˜์šฐ์ขŒ

   ๋ฐฉํ–ฅ ๊ฐ’์ด 0์ด๋ผ๋ฉด r+dr[0], c+dc[0]์„ ํ†ตํ•ด ์œ„์ชฝ์œผ๋กœ ์ด๋™ํ•˜๊ฒŒ ๋œ๋‹ค.

   ๋ฐฉํ–ฅ ๊ฐ’์ด 3์ด๋ผ๋ฉด r+dr[3], c+dc[3]์ด ๋˜๋ฉด์„œ ์ขŒ์ธก์œผ๋กœ ์ด๋™ํ•œ๋‹ค.

 

   ์ฆ‰, ํŒŒ์ดํ”„ ๋ฒˆํ˜ธ๊ฐ€ 2์ด๊ณ  ๊ทธ๋•Œ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉํ–ฅ ๊ฐ’์ด 0, 1๋กœ ์ฃผ์–ด์ง„๋‹ค๋ฉด,

   ์ด ํŒŒ์ดํ”„๋Š” ์•„๋ž˜(0)/์œ„(1)๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๋œป์ด ๋œ๋‹ค.

   ๋‚˜๋Š” ์•„๋ž˜์ฒ˜๋Ÿผ ํ‘œ์‹œํ–ˆ๋‹ค. ๋ฐฉํ–ฅ ๊ฐ’์ด -1์ธ ๊ฒƒ์€ ์ด๋™ํ•  ์ˆ˜ ์—†๋Š” ๊ณณ์ด๋ž€ ๋œป์ด๋‹ค.

static int[][] tunnel = {		// ํŒŒ์ดํ”„ ๋ฒˆํ˜ธ
			{-1},		// 0 ์—†๋Š” ๋ฒˆํ˜ธ
			{0,1,2,3},	// 1
			{0,1},		// 2
			{2,3},		// 3
			{1,2},		// 4
			{0,2},		// 5
			{0,3},		// 6
			{1,3}		// 7
};

 

 ๋‹ค์‹œ ํ•œ ๋ฒˆ ์„ค๋ช…ํ•ด๋ณด๊ฒ ๋‹ค.

 5๋ฒˆ ํŒŒ์ดํ”„๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•ด๋ณด์ž. ์ด ํŒŒ์ดํ”„๋ฅผ ๋งŒ๋‚ฌ์„ ๋•Œ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉํ–ฅ์„ ๋ณด๋ ค๋ฉด tunnel ๋ณ€์ˆ˜์˜ 5๋ฒˆ ๋ฐฐ์—ด์„ ๋ณด๋ฉด ๋œ๋‹ค. 

์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉํ–ฅ: ํ•˜/์šฐ

 ๊ทธ๋ฆผ์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋“ฏ์ด, ํ˜„์žฌ 5๋ฒˆ ํŒŒ์ดํ”„ ์œ„์— ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค๋ฉด ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉํ–ฅ์€ ์•„๋ž˜์ชฝ(0), ์˜ค๋ฅธ์ชฝ(2) ๋‘ ๊ฐ€์ง€๋ฐ–์— ์—†๋‹ค.

 ๋”ฐ๋ผ์„œ tunnel[5]์˜ ๊ฐ’์œผ๋กœ๋Š” 0,2๊ฐ€ ๋“ค์–ด๊ฐ€๊ฒŒ ๋œ๋‹ค.

 

 

 

 

 โœ”๏ธ ํ˜„์žฌ ์œ„์น˜์—์„œ ์‚ฌ๋ฐฉ์„ ํ™•์ธ, ์ƒˆ๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” ์œ„์น˜๋ฅผ ๋Œ€๊ธฐํ์— ๋„ฃ๋Š”๋‹ค.

    ์ด๋ฏธ ๋ฐฉ๋ฌธ์ฒ˜๋ฆฌ๋œ ์œ„์น˜๋ผ๋ฉด ๋‹ค์‹œ ๋ณด์ง€ ์•Š๋Š”๋‹ค.

 

 โœ”๏ธ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” ์œ„์น˜๋ผ๋„ ํ˜„์žฌ ์œ„์น˜์™€ ์ด์–ด์ ธ ์žˆ๋Š”์ง€๋ฅผ ํ™•์ธํ•ด์•ผํ•œ๋‹ค.

    ํ›„๋ณด ์œ„์น˜์—์„œ ๋ฐฉ๋ฌธํ•  ์ˆ˜ ์žˆ๋Š” ์œ„์น˜๋ฅผ ํ™•์ธํ–ˆ์„ ๋•Œ ํ˜„์žฌ ์œ„์น˜๊ฐ€ ์žˆ๋‹ค๋ฉด, ํ›„๋ณด ์œ„์น˜๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋‹ค. (ํ์— ๋„ฃ์„ ์ˆ˜ ์žˆ๋‹ค)

 

 ์˜ˆ์‹œ๋กœ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์‚ฌ์ง„์„ ๋“ค ์ˆ˜ ์žˆ๋‹ค.

 ์•„๋ž˜ ํŒŒ์ดํ”„์—์„œ๋Š” ์œ„์ชฝ์œผ๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์œ„์ชฝ ํŒŒ์ดํ”„๊ฐ€ ์•„๋ž˜ ํŒŒ์ดํ”„์™€ ์—ฐ๊ฒฐ๋˜์–ด์žˆ์ง€ ์•Š์œผ๋ฏ€๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” ์กฐ๊ฑด์ด ์•„๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์กฐ๊ฑด์„ ์ƒ๊ฐํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.

 

 

 โœ”๏ธ ํ์— ๊ฐ’์„ ๋„ฃ์„ ๋•Œ๋Š” ์œ„์น˜๊ฐ’๊ณผ ํ•จ๊ป˜ ์‹œ๊ฐ„๋„ 1์„ ๋”ํ•ด ๋„ฃ์–ด์ค€๋‹ค.

    ํ์—์„œ ์ƒˆ๋กœ ๋ฝ‘์€ ํ˜„์žฌ ์œ„์น˜๊ฐ€ ์†Œ์š”์‹œ๊ฐ„ L์ผ ๋•Œ์—๋Š” ๋‹ค์Œ ์œ„์น˜๋ฅผ ์‚ดํŽด๋ณผ ํ•„์š”๊ฐ€ ์—†๋‹ค.

 

 

 

 

 

 

 

๐Ÿ™‹‍โ™€๏ธ ์˜๊ฒฌ

 ์†”์งํžˆ ๋‚ด๊ฐ€ ์ง  ์ฝ”๋“œ๊ฐ€ ์ตœ์ ์˜ ์ฝ”๋“œ์ธ์ง€๋Š” ๋ชจ๋ฅด๊ฒ ๋‹ค (ใ…Žใ…Ž)

 ๊ต์ˆ˜๋‹˜์ด ๋”ฐ๋กœ ํ’€์ด๋ฅผ ํ•ด์ฃผ์…จ๋Š”๋ฐ, ํ•˜ํ•„ ๋”ฑ ๊ทธ๋•Œ ํ‰์†Œ๋‹ต์ง€ ์•Š๊ฒŒ ์กธ์•„๋ฒ„๋ ค์„œ.....์ฝ”๋“œ๊ฐ€ ์—†๋‹ค.

 ๋‹ค์‹œ ์ •๋ฆฌํ•˜๋ ค๊ณ  ๋ณด๋‹ˆ๊นŒ ์‹ธํ”ผ๋ฅผ ํ‡ด์†Œํ•ด์„œ ์ฝ”๋“œ๋ฅผ ๋ณผ ์ˆ˜๊ฐ€ ์—†๋„ค. 

 

 

 

 

 

 

 

 

 

 

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

public class Solution_SWEA_1953_ํƒˆ์ฃผ๋ฒ”๊ฒ€๊ฑฐ_๋‚˜์„ธ์ด {

	static int[] dr = {1,-1,0,0};
	static int[] dc = {0,0,1,-1};
	static int[][] tunnel = {
			{-1},		// 0
			{0,1,2,3},	// 1
			{0,1},		// 2
			{2,3},		// 3
			{1,2},		// 4
			{0,2},		// 5
			{0,3},		// 6
			{1,3}		// 7
	};
	static int[][] map;
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder();
		int TC = Integer.parseInt(br.readLine().trim());
		for (int testCase = 1; testCase <= TC; testCase++) {
			StringTokenizer st = new StringTokenizer(br.readLine().trim());
			int N = Integer.parseInt(st.nextToken());	//์„ธ๋กœ
			int M = Integer.parseInt(st.nextToken());	//๊ฐ€๋กœ
			int R = Integer.parseInt(st.nextToken());	//๋งจํ™€R
			int C = Integer.parseInt(st.nextToken());	//๋งจํ™€C
			int L = Integer.parseInt(st.nextToken());	//์†Œ์š”์‹œ๊ฐ„
			
			map = new int[N][M];
			for (int i = 0; i < N; i++) {
				st = new StringTokenizer(br.readLine().trim());
				for (int j = 0; j < M; j++) {
					map[i][j] = Integer.parseInt(st.nextToken());
				}
			}//input
			
			int result = 0;
			boolean[][] visited = new boolean[N][M];
			Queue<int[]> queue = new LinkedList<int[]>();
			queue.offer(new int[] {R,C, 1});	// r, c, time
			visited[R][C]=true;
			result++;
			
			while(queue.size()>0) {
				int[] cur = queue.poll();
				int r = cur[0];
				int c = cur[1];
				int t = cur[2];
				int p = map[r][c];//ํ˜„์žฌ ์œ„์น˜์˜ ํŒŒ์ดํ”„ ๋ฒˆํ˜ธ
				//์†Œ์š”์‹œ๊ฐ„์ด ๋‹ค ๋์œผ๋ฉด ๋” ์›€์ง์ด์ง€ ์•Š๋Š”๋‹ค.
				if(t==L) continue;
				
				// ํ˜„์žฌ ์œ„์น˜์˜ ํŒŒ์ดํ”„์—์„œ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ๋ฐฉํ–ฅ์„ ํƒ์ƒ‰
				for (int i = 0; i < tunnel[p].length; i++) {
					int nd = tunnel[p][i];
					int nr = r + dr[nd];
					int nc = c + dc[nd];
					
					if(nr<0||nc<0||nr>=N||nc>=M||
							map[nr][nc]==0 ||
							visited[nr][nc]) continue;

					// ์ƒˆ ํŒŒ์ดํ”„๊ฐ€ ํ˜„์žฌ ์œ„์น˜์™€ ์—ฐ๊ฒฐ๋˜์–ด์žˆ์ง€ ์•Š๋‹ค๋ฉด ํŒจ์Šค
					if(!isConnected(r,c,nr,nc)) continue;
                    
					// ํƒ์ƒ‰ํ•œ ์œ„์น˜๋กœ ์ด๋™
					visited[nr][nc]=true;
					queue.offer(new int[] {nr,nc, t+1});
					result++;
				}
			}//
			
			sb.append("#").append(testCase).append(" ").append(result).append("\n");
		}//end of testCase
		System.out.println(sb);
	}//end of main
	
	private static boolean isConnected(int r1, int c1, int r2, int c2) {
		int p = map[r2][c2]; //์ƒˆ ํŒŒ์ดํ”„ ๋ฒˆํ˜ธ
		for (int i = 0; i < tunnel[p].length; i++) {//์ƒˆ ํŒŒ์ดํ”„์—์„œ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ๋ฐฉํ–ฅ
			int nd = tunnel[p][i];
			//ํ˜„์žฌ ๋ฐฉํ–ฅ์œผ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋‹ค๋ฉด
			if(r2+dr[nd]==r1 && c2+dc[nd]==c1) {
				return true;
			}
		}
		return false;
	}//end of isConnected
}//end of class

 

 

 

 

 

 

 

 

 

 

 

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

 

 

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

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