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๋ฅผ ๋ฆฌํดํ๋ ๊ฒ์ผ๋ก ์ฝ๋๋ฅผ ์์ฑํ๊ฒ ๋๋ฉด ์ต์ข ์ ์ผ๋ก ๊ฒฐ๊ณผ๊ฐ ๋์ค๊ฒ ๋๋ค.
'๊ฐ์ธ๊ณต๋ถ > Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Level 1] ํ๋ ฌ์ ๋ง์ (0) | 2021.03.28 |
---|---|
[Level 1] x๋งํผ ๊ฐ๊ฒฉ์ด ์๋ n๊ฐ์ ์ซ์ (0) | 2021.03.26 |
[Level 1] ์ง์ฌ๊ฐํ ๋ณ์ฐ๊ธฐ (0) | 2021.03.25 |
[Level 1] ์์ฃผํ์ง ๋ชปํ ์ ์ (0) | 2021.03.25 |
[Level 1] ๋ ๊ฐ ๋ฝ์์ ๋ํ๊ธฐ (0) | 2021.03.23 |
๋๊ธ