๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๊ฐœ์ธ๊ณต๋ถ€/Algorithm

[Level 1] ํฌ๋ ˆ์ธ ์ธํ˜•๋ฝ‘๊ธฐ ๊ฒŒ์ž„

by ๐Ÿ‡๋ฐ•๋ด‰๋ด‰๐Ÿ‡ 2021. 3. 23.

 

 

Algorithm

-  ํฌ๋ ˆ์ธ ์ธํ˜•๋ฝ‘๊ธฐ ๊ฒŒ์ž„ -

 


 

๋ฌธ์ œ

๊ฒŒ์ž„๊ฐœ๋ฐœ์ž์ธ "์กฐ๋ฅด๋””"๋Š” ํฌ๋ ˆ์ธ ์ธํ˜•๋ฝ‘๊ธฐ ๊ธฐ๊ณ„๋ฅผ ๋ชจ์ผ ๊ฒŒ์ž„์œผ๋กœ ๋งŒ๋“ค๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

"์กฐ๋ฅด๋””"๋Š” ๊ฒŒ์ž„์˜ ์žฌ๋ฏธ๋ฅผ ๋†’์ด๊ธฐ ์œ„ํ•ด ํ™”๋ฉด ๊ตฌ์„ฑ๊ณผ ๊ทœ์น™์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ฒŒ์ž„ ๋กœ์ง์— ๋ฐ˜์˜ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

 

 

๊ฒŒ์ž„ ํ™”๋ฉด์€ "1 x 1" ํฌ๊ธฐ์˜ ์นธ๋“ค๋กœ ์ด๋ฃจ์–ด์ง„ "N x N" ํฌ๊ธฐ์˜ ์ •์‚ฌ๊ฐ ๊ฒฉ์ž์ด๋ฉฐ ์œ„์ชฝ์—๋Š” ํฌ๋ ˆ์ธ์ด ์žˆ๊ณ  ์˜ค๋ฅธ์ชฝ์—๋Š” ๋ฐ”๊ตฌ๋‹ˆ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

(์œ„ ๊ทธ๋ฆผ์€ "5 x 5" ํฌ๊ธฐ์˜ ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค)

๊ฐ ๊ฒฉ์ž ์นธ์—๋Š” ๋‹ค์–‘ํ•œ ์ธํ˜•์ด ๋“ค์–ด ์žˆ์œผ๋ฉฐ ์ธํ˜•์ด ์—†๋Š” ์นธ์€ ๋นˆ์นธ์ž…๋‹ˆ๋‹ค. ๋ชจ๋“  ์ธํ˜•์€ "1 x 1" ํฌ๊ธฐ์˜ ๊ฒฉ์ž ํ•œ ์นธ์„ ์ฐจ์ง€ํ•˜๋ฉฐ ๊ฒฉ์ž์˜ ๊ฐ€์žฅ ์•„๋ž˜ ์นธ๋ถ€ํ„ฐ ์ฐจ๊ณก์ฐจ๊ณก ์Œ“์—ฌ ์žˆ์Šต๋‹ˆ๋‹ค. 

๊ฒŒ์ž„ ์‚ฌ์šฉ์ž๋Š” ํฌ๋ ˆ์ธ์„ ์ขŒ์šฐ๋กœ ์›€์ง์—ฌ์„œ ๋ฉˆ์ถ˜ ์œ„์น˜์—์„œ ๊ฐ€์žฅ ์œ„์— ์žˆ๋Š” ์ธํ˜•์„ ์ง‘์–ด ์˜ฌ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ง‘์–ด ์˜ฌ๋ฆฐ ์ธํ˜•์€ ๋ฐ”๊ตฌ๋‹ˆ์— ์Œ“์ด๊ฒŒ ๋˜๋Š” ๋ฐ, ์ด๋•Œ ๋ฐ”๊ตฌ๋‹ˆ์˜ ๊ฐ€์žฅ ์•„๋ž˜ ์นธ๋ถ€ํ„ฐ ์ธํ˜•์ด ์ˆœ์„œ๋Œ€๋กœ ์Œ“์ด๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ ๊ทธ๋ฆผ์€ [1๋ฒˆ, 5๋ฒˆ, 3๋ฒˆ] ์œ„์น˜์—์„œ ์ˆœ์„œ๋Œ€๋กœ ์ธํ˜•์„ ์ง‘์–ด ์˜ฌ๋ ค ๋ฐ”๊ตฌ๋‹ˆ์— ๋‹ด์€ ๋ชจ์Šต์ž…๋‹ˆ๋‹ค.

 

 

๋งŒ์•ฝ ๊ฐ™์€ ๋ชจ์–‘์˜ ์ธํ˜• ๋‘ ๊ฐœ๊ฐ€ ๋ฐ”๊ตฌ๋‹ˆ์— ์—ฐ์†ํ•ด์„œ ์Œ“์ด๊ฒŒ ๋˜๋ฉด ๋‘ ์ธํ˜•์€ ํ„ฐ๋œจ๋ ค์ง€๋ฉด์„œ ๋ฐ”๊ตฌ๋‹ˆ์—์„œ ์‚ฌ๋ผ์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์œ„ ์ƒํƒœ์—์„œ ์ด์–ด์„œ [5๋ฒˆ] ์œ„์น˜์—์„œ ์ธํ˜•์„ ์ง‘์–ด ๋ฐ”๊ตฌ๋‹ˆ์— ์Œ“์œผ๋ฉด ๊ฐ™์€ ๋ชจ์–‘ ์ธํ˜• ๋‘ ๊ฐœ๊ฐ€ ์—†์–ด์ง‘๋‹ˆ๋‹ค.

 

ํฌ๋ ˆ์ธ ์ž‘๋™ ์‹œ ์ธํ˜•์ด ์ง‘์–ด์ง€์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๋Š” ์—†์œผ๋‚˜ ๋งŒ์•ฝ ์ธํ˜•์ด ์—†๋Š” ๊ณณ์—์„œ ํฌ๋ ˆ์ธ์„ ์ž‘๋™์‹œํ‚ค๋Š” ๊ฒฝ์šฐ์—๋Š” ์•„๋ฌด๋Ÿฐ ์ผ๋„ ์ผ์–ด๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ๋ฐ”๊ตฌ๋‹ˆ๋Š” ๋ชจ๋“  ์ธํ˜•์ด ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ์„ ๋งŒํผ ์ถฉ๋ถ„ํžˆ ํฌ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.

(๊ทธ๋ฆผ์—์„œ๋Š” ํ™”๋ฉดํ‘œ์‹œ ์ œ์•ฝ์œผ๋กœ 5์นธ๋งŒ์œผ๋กœ ํ‘œํ˜„ํ•˜์˜€์Œ)

๊ฒŒ์ž„ ํ™”๋ฉด์˜ ๊ฒฉ์ž์˜ ์ƒํƒœ๊ฐ€ ๋‹ด๊ธด 2์ฐจ์› ๋ฐฐ์—ด board์™€ ์ธํ˜•์„ ์ง‘๊ธฐ ์œ„ํ•ด ํฌ๋ ˆ์ธ์„ ์ž‘๋™์‹œํ‚จ ์œ„์น˜๊ฐ€ ๋‹ด๊ธด ๋ฐฐ์—ด moves๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ํฌ๋ ˆ์ธ์„ ๋ชจ๋‘ ์ž‘๋™์‹œํ‚จ ํ›„ ํ„ฐํŠธ๋ ค์ ธ ์‚ฌ๋ผ์ง„ ์ธํ˜•์˜ ๊ฐœ์ˆ˜๋ฅผ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.

 

์ž…์ถœ๋ ฅ ์˜ˆ์‹œ

board moves result
[
  [0, 0, 0, 0, 0],
  [0, 0, 1, 0, 3],
  [0, 2, 5, 0, 1],
  [4, 2, 4, 4, 2],
  [3, 5, 1, 3, 1]
]
[1, 5, 3, 5, 1, 2, 1, 4] 4

 

๋ฌธ์ œ ํ’€๊ธฐ

์ด ๋ฌธ์ œ๋Š” ์ธํ˜•๋ฝ‘๊ธฐ๋ฅผ ์ด์šฉํ•˜์—ฌ board์•ˆ์— ์žˆ๋Š” ์ธํ˜•๋“ค์„ ๋„์ง‘์–ด ๋‚ด์„œ box์•ˆ์— ๋„ฃ์–ด์„œ ๊ฐ™์€ ์บ๋ฆญํ„ฐ๊ฐ€ ๋งŒ๋‚ฌ์„ ๊ฒฝ์šฐ count ์ˆ˜๋ฅผ ์˜ฌ๋ฆฌ๋Š” ๋ฌธ์ œ์ธ๋ฐ ์‚ฌ์‹ค ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š”๋ฐ ๊ฝค๋‚˜ ์˜ค๋žœ ์‹œ๊ฐ„์ด ๊ฑธ๋ ธ๋˜ ๊ฒƒ ๊ฐ™๋‹ค.

 

๋ฌธ์ œ์˜ ๋‹ต๋“ค์„ ํ™•์ธํ•ด๋ณด๋‹ˆ ๋Œ€๋ถ€๋ถ„ ์ •๊ทœํ‘œํ˜„์‹์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ‘ธ๋Š” ๊ฒƒ ๊ฐ™์•˜๋Š”๋ฐ ์ผ๋‹จ ๋‚˜๋Š” ๋‚ด๊ฐ€ ์•Œ๊ณ  ์žˆ๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด ๋‚˜๊ฐ€๊ณ  ์‹ถ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ˜๋ณต๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์„ ์‹œ๋„ํ•ด ๋ณด์•˜๋‹ค. 

 

์ผ๋‹จ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ board์™€ moves๊ฐ€ ์ฃผ์–ด์ง€๋Š”๋ฐ boardํŒ์—์„œ moves๋ผ๋Š” ๋ฐฐ์—ด์•ˆ์— ์žˆ๋Š” ์œ„์น˜๋กœ ์ด๋™ํ•˜์—ฌ ๋ฝ‘๊ธฐ๋ฅผ ํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ผ๋‹จ์€ ๋ฝ‘๊ธฐ๋ฅผ ์ง‘์€๋‹ค์Œ์— ๋„ฃ์–ด์ค„ box์™€ ๊ฐ’์„ ๋ฆฌํ„ดํ•  count๋ณ€์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด ์ค€ ๋‹ค์Œ์— moves์˜ ํšŸ์ˆ˜(๊ธธ์ด)๋งŒํผ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ฐ˜๋ณต๋ฌธ์„ ์„ค์ •ํ•ด ์ฃผ์—ˆ๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  ๋ฝ‘๊ธฐ๋ฅผ ๋™์ž‘ํ•œ ๋‹ค์Œ์—๋Š” ์บ๋ฆญํ„ฐ๋ฅผ ์ง‘๊ธฐ ์œ„ํ•ด์„œ board์˜ ๊นŠ์ด๋งŒํผ ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋„๋ก ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋ฐ˜๋ณต๋ฌธ์„ ์ž‘์„ฑํ•ด ์ด์ค‘ ํฌ๋ฌธ์„ ๋งŒ๋“ค์–ด ์ฃผ์—ˆ๋‹ค.

 

์ด์ค‘ ๋ฐ˜๋ณต๋ฌธ์„ ๊ฑฐ์น˜๊ณ  ๋‚œ ๋‹ค์Œ์—๋Š” ๋ฝ‘๊ธฐ ์ง‘๊ฒŒ์˜ ์œ„์น˜์— ์žˆ๋Š” ์นธ์˜ ๊ฐ’์ด 0์ผ ๊ฒฝ์šฐ (์ธํ˜•์ด ์—†์„ ๊ฒฝ์šฐ) ๊ณ„์† ๊นŠ๊ฒŒ ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋„๋ก ์กฐ๊ฑด๋ฌธ๋“ค ๋งŒ๋“ค์–ด ์ฃผ๊ณ , 0์ด ์•„๋‹ ๊ฒฝ์šฐ์— ๋˜ ๋‹ค์‹œ ์ƒˆ๋กœ์šด ์กฐ๊ฑด๋ฌธ์„ ์ž‘์„ฑํ•˜์—ฌ box์•ˆ์— ์žˆ๋Š” ๋งˆ์ง€๋ง‰ ๊ฐ’๊ณผ ๋น„๊ตํ•˜์—ฌ ์ผ์น˜์—ฌ๋ถ€๋ฅผ ํŒ๋‹จํ•ด box์˜ ๋งˆ์ง€๋ง‰ ์ธ๋ฑ์Šค๋ฒˆ์งธ์— ์žˆ๋Š” ๊ฐ’๊ณผ ์ผ์น˜ํ•  ๊ฒฝ์šฐ์—” box์˜ ๋งˆ์ง€๋ง‰ ๋ฒˆ์งธ์— ์žˆ๋Š” ๊ฐ’์„ ์ง€์šฐ๊ณ  count๋ฅผ 2์˜ฌ๋ฆฌ๋„๋ก ํ•˜์˜€์œผ๋ฉฐ (2๊ฐœ๊ฐ€ ์ผ์น˜ํ•˜๋ฉด ๋™์‹œ์— ์‚ฌ๋ผ์ง€๊ธฐ ๋•Œ๋ฌธ) ๊ฐ’์ด ๋‹ค๋ฅผ ๊ฒฝ์šฐ์—” box์•ˆ์— ๋„ฃ๋„๋ก ์„ค์ •ํ•ด ์ฃผ์—ˆ๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  ์ฝ”๋“œ๊ฐ€ ๋ถˆํ•„์š”ํ•œ ๋ฐ˜๋ณต์„ ํ•˜๋Š” ๊ฒƒ์„ ๋ง‰๊ธฐ ์œ„ํ•ด์„œ break๋ฌธ์„ ์‚ฌ์šฉํ•ด ์ฃผ์—ˆ๋‹ค.

 

๋งˆ์ง€๋ง‰์œผ๋กœ moves์˜ ๊ธธ์ด๋งŒํผ ๋ฐ˜๋ณต๋ฌธ์„ ๋‹ค ๋Œ๋ ธ์„ ๊ฒฝ์šฐ ์ตœ์ข… count๋ฅผ ๋ฆฌํ„ดํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ฒŒ ๋˜๋ฉด ์ตœ์ข…์ ์œผ๋กœ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ค๊ฒŒ ๋œ๋‹ค.

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€