์ฝ๋ฉ ํ
์คํธ์์ ๊ตฌํ์ด๋ '๋จธ๋ฆฟ์์ ์๋ ์๊ณ ๋ฆฌ์ฆ์ ์์ค์ฝ๋๋ก ๋ฐ๊พธ๋ ๊ณผ์ '
ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๋ฌธ๋ฒ์ ์ ํํ ์๊ณ ์์ด์ผ ํ๋ฉฐ ๋ฌธ์ ์ ์๊ตฌ์ฌํญ์ ์ด๊ธ๋์ง ์๋ ๋ต์ ์ฝ๋๋ฅผ ์ค์ ์์ด ์์ฑํด์ผ ํจ
๊ตฌํ ์ ํ์ ๋ฌธ์ = 'ํ์ด๋ฅผ ๋ ์ฌ๋ฆฌ๋ ๊ฒ์ ์ฝ์ง๋ง ์์ค์ฝ๋๋ก ์ฎ๊ธฐ๊ธฐ ์ด๋ ค์ด ๋ฌธ์ '๋ฅผ ์๋ฏธ
๋ณดํต ๊ตฌํ ์ ํ์ ๋ฌธ์ ๋ ์ฌ์ํ ์ ๋ ฅ ์กฐ๊ฑด ๋ฑ์ ๋ฌธ์ ์์ ๋ช ์ํด์ฃผ๋ฉฐ ๋ฌธ์ ์ ๊ธธ์ด๊ฐ ๊ฝค ๊ธด ํธ์
ํด๋น ์ฑ ์์๋ ์์ ํ์, ์๋ฎฌ๋ ์ด์ ์ ํ์ ๋ชจ๋ '๊ตฌํ' ์ ํ์ผ๋ก ๋ฌถ์ด์ ๋ค๋ฃธ
ํ์ด์ฌ์์๋ ํ๋ก๊ทธ๋๋จธ๊ฐ ์ง์ ์๋ฃํ์ ์ง์ ํ ํ์๊ฐ ์์ผ๋ฉฐ ๋งค์ฐ ํฐ ์์ ์ฐ์ฐ ๋ํ ๊ธฐ๋ณธ์ผ๋ก ์ง์ํจ
ํ์ด์ฌ์์ ์ฌ๋ฌ ๊ฐ์ ๋ณ์๋ฅผ ์ฌ์ฉํ ๋๋ ๋ฆฌ์คํธ๋ฅผ ์ด์ฉํจ
๋ฆฌ์คํธ๋ฅผ ์ด์ฉํ ๋์ ๊ณ ๋ คํด์ผ ํ ์ฌํญ => ์ฝ๋ฉ ํ
์คํธ์ ๋ฉ๋ชจ๋ฆฌ ์ ํ (๋์ฒด๋ก 128 ~ 512MB)
์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ์ค ๋๋ก๋ ์๋ฐฑ๋ง ๊ฐ ์ด์์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํด์ผ ํ๋ ๋ฌธ์ ๊ฐ ์ถ์ ๋๊ณค ํจ => ๋ฉ๋ชจ๋ฆฌ ์ ํ์ ์ผ๋์ ๋๊ณ ์ฝ๋ฉํด์ผ ํจ
int ์๋ฃํ ๋ฐ์ดํฐ์ ๊ฐ์์ ๋ฐ๋ฅธ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋
๋ฐ์ดํฐ์ ๊ฐ์(๋ฆฌ์คํธ์ ๊ธธ์ด) | ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋ |
---|---|
1,000 | ์ฝ 4KB |
1,000,000 | ์ฝ 4MB |
10,000,000 | ์ฝ 40MB |
์ผ๋ฐ์ ์ธ ์ฝ๋ฉ ํ ์คํธ ์์ค์์๋ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋ ์ ํ๋ณด๋ค ๋ ์ ์ ํฌ๊ธฐ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค๋ ์ ์ ๋๋ง ๊ธฐ์ตํ์
๋ณดํต ์ ํ๋ ์ฝ๋ฉ ํ ์คํธ ํ๊ฒฝ์ ์๋์ ๊ฐ์
ํ์ด์ฌ์ C/C++์ ๋นํด ๋์ ์๋ ๋๋ฆผ
1์ด์ 2,000๋ง ๋ฒ์ ์ฐ์ฐ์ ์ํํ๋ค๊ณ ๊ฐ์ ํ๋ฉด ํฌ๊ฒ ๋ฌด๋ฆฌ๊ฐ ์๋ค๋ ์ ๋ง ๊ธฐ์ตํ์
(Pypy3๋ ๋๋ต 1์ด์ 2,000๋ง ๋ฒ์์ 1์ต ๋ฒ ์ ๋์ ์ฐ์ฐ์ ์ฒ๋ฆฌํ ์ ์์)
์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ๋ฅผ ํ ๋๋ ์๊ฐ ์ ํ๊ณผ ๋ฐ์ดํฐ์ ๊ฐ์๋ฅผ ๋จผ์ ํ์ธํ ๋ค์ ์ด ๋ฌธ์ ๋ฅผ ์ด๋ ์ ๋์ ์๊ฐ ๋ณต์ก๋์ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ์์ฑํด์ผ ํ ์ ์์ ๊ฒ์ธ์ง ์์ธกํ ์ ์์ด์ผ ํจ
์ฌํ๊ฐ A๋ N x N ํฌ๊ธฐ์ ์ ์ฌ๊ฐํ ๊ณต๊ฐ ์์ ์ ์์ (๊ณต๊ฐ์ 1 x 1 ํฌ๊ธฐ์ ์ ์ฌ๊ฐํ)
๊ฐ์ฅ ์ผ์ชฝ ์ ์ขํ๋ (1, 1), ๊ฐ์ฅ ์ค๋ฅธ์ชฝ ์๋ ์ขํ๋ (N, N)์ ํด๋นํจ
์ฌํ๊ฐ A๋ ์(U), ํ(D), ์ข(L), ์ฐ(R) ๋ฐฉํฅ์ผ๋ก ์ด๋ํ ์ ์์ผ๋ฉฐ, ์์ ์ขํ๋ (1, 1)
๊ณํ์์๋ ํ๋์ ์ค์ ๋์ด์ฐ๊ธฐ๋ฅผ ๊ธฐ์ค์ผ๋ก ํ์ฌ L, R, U, D ์ค ํ๋์ ๋ฌธ์๊ฐ ๋ฐ๋ณต์ ์ผ๋ก ์ ํ ์์
์ฌํ๊ฐ A๊ฐ N x N ํฌ๊ธฐ์ ์ ์ฌ๊ฐํ ๊ณต๊ฐ์ ๋ฒ์ด๋๋ ์์ง์์ ๋ฌด์๋จ
๊ณํ์๊ฐ ์ฃผ์ด์ก์ ๋ ์ฌํ๊ฐ A๊ฐ ์ต์ข ์ ์ผ๋ก ๋์ฐฉํ ์ง์ ์ ์ขํ๋ฅผ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค
์ฐ์ฐ ํ์๋ ์ด๋ ํ์์ ๋น๋กํ๊ฒ ๋จ, ์ด๋ ํ์๊ฐ N๋ฒ์ธ ๊ฒฝ์ฐ ์๊ฐ ๋ณต์ก๋๋ O(N)
์ผ๋ จ์ ๋ช
๋ น์ ๋ฐ๋ผ ๊ฐ์ฒด๋ฅผ ์ฐจ๋ก๋๋ก ์ด๋์ํจ๋ค๋ ์ ์์ ์๋ฎฌ๋ ์ด์
์ ํ์ผ๋ก ๋ถ๋ฅ๋จ
์ฝ๋ฉ ํ
์คํธ์์์ ์๋ฎฌ๋ ์ด์
์ ํ, ๊ตฌํ ์ ํ, ์์ ํ์ ์ ํ์ ์๋ก ์ ์ฌํ ์ ์ด ๋ง์
๊ฐ์ฅ ๋์ด๋๊ฐ ๋ฎ์ 1 ~ 2๋ฒ ๋ฌธ์ => ๋๋ถ๋ถ ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ ๊ตฌํ ๋ฌธ์
์ ์ N์ด ์ ๋ ฅ๋๋ฉด 00์ 00๋ถ 00์ด๋ถํฐ N์ 59๋ถ 59์ด๊น์ง์ ๋ชจ๋ ์๊ฐ ์ค์์ 3์ด ํ๋๋ผ๋ ํฌํจ๋๋ ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค
๋ชจ๋ ์๊ฐ์ ๊ฒฝ์ฐ๋ฅผ ํ๋์ฉ ์ธ์ ์ฝ๊ฒ ํ ์ ์๋ ๋ฌธ์ (ํ๋ฃจ๋ 86,400์ด์ด๊ธฐ์ ๋ชจ๋ ๊ฒฝ์ฐ๋ 86,400๊ฐ์ง๋ฐ์ ์กด์ฌํ์ง ์๊ธฐ ๋๋ฌธ)
ย => ๊ฒฝ์ฐ์ ์๊ฐ 100,000๊ฐ๋ ๋์ง ์์ผ๋ฏ๋ก ํ์ด์ฌ์์ ๋ฌธ์์ด ์ฐ์ฐ์ ์ด์ฉํด 3์ด ์๊ฐ์ ํฌํจ๋์ด ์๋์ง ํ์ธํด๋ ์๊ฐ ์ ํ 2์ด ์์ ๋ฌธ์ ํด๊ฒฐ ๊ฐ๋ฅ
๋จ์ํ ์๊ฐ์ 1์ฉ ์ฆ๊ฐ์ํค๋ฉฐ 3์ด ํ๋๋ผ๋ ํฌํจ๋์ด ์๋์ง ํ์ธํ๋ฉด ๋จ
์, ๋ถ, ์ด์ ๋ํ ๊ฒฝ์ฐ์ ์ => 24 x 60 x 60 => 3์ค ๋ฐ๋ณต๋ฌธ
์ด๋ฌํ ์ ํ์ ์์ ํ์ ์ ํ์ผ๋ก ๋ถ๋ฅ๋๊ธฐ๋ ํจ
์ผ๋ฐ์ ์ผ๋ก ์์ ํ์ ์๊ณ ๋ฆฌ์ฆ์ ๋นํจ์จ์ ์ธ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ์ง๊ณ ์๊ธฐ์ ๋ฐ์ดํฐ ๊ฐ์๊ฐ ํฐ ๊ฒฝ์ฐ ์ ์์ ์ผ๋ก ๋์ํ์ง ์์ ์ ์์
๋ฐ๋ผ์, ํ์ธ(ํ์)ํด์ผ ํ ์ ์ฒด ๋ฐ์ดํฐ ๊ฐ์๊ฐ 100๋ง ๊ฐ ์ดํ์ผ ๋ ์์ ํ์์ ์ฌ์ฉํ๋ฉด ์ ์ ํจ
์์ค ์ ์์ 8 x 8 ์ขํ ํ๋ฉด, ํ ์์น๋ฅผ ํํํ ๋๋ 1 ~ 8, ์ด ์์น๋ฅผ ํํํ ๋๋ a ~ h๋ก ํํ
ํน์ ํ ํ ์นธ์ ๋์ดํธ๊ฐ ์ ์์, L์ ํํ๋ก๋ง ์ด๋ํ ์ ์์ผ๋ฉฐ ์ ์ ๋ฐ์ผ๋ก๋ ๋๊ฐ ์ ์์
๋ค์๊ณผ ๊ฐ์ 2๊ฐ์ง ๊ฒฝ์ฐ๋ก ์ด๋ํ ์ ์์
ย 1. ์ํ์ผ๋ก ๋ ์นธ ์ด๋ํ ๋ค์ ์์ง์ผ๋ก ํ ์นธ ์ด๋ํ๊ธฐ
ย 2. ์์ง์ผ๋ก ๋ ์นธ ์ด๋ํ ๋ค์ ์ํ์ผ๋ก ํ ์นธ ์ด๋ํ๊ธฐ
๋์ดํธ์ ์์น๊ฐ ์ฃผ์ด์ก์ ๋ ๋์ดํธ๊ฐ ์ด๋ํ ์ ์๋ ๊ฒฝ์ฐ์ ์๋ฅผ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค
์์ '์ํ์ข์ฐ' ๋ฌธ์ ์ ์ ์ฌ
๋์ดํธ๊ฐ ์ด๋ํ ์ ์๋ ๊ฒฝ๋ก๋ฅผ ํ๋์ฉ ํ์ธํ์ฌ ์ด๋ํ๋ฉด ๋จ (๋จ, 8 x 8 ์ขํ ํ๋ฉด์ ๋ฒ์ด๋์ง ์๋๋ก ํ์ธ)
๋์ดํธ์ ์ด๋ ๊ฒฝ๋ก๋ฅผ steps ๋ณ์์ ๋ฃ๋๋ค๋ฉด, steps = [(-2, -1), (-1, -2), (1, -2), (2, -1), (2, 1), (1, 2), (-1, 2), (-2, 1)]
์บ๋ฆญํฐ๊ฐ ์๋ ์ฅ์๋ 1 x 1ํฌ๊ธฐ์ ์ ์ฌ๊ฐํ์ผ๋ก ์ด๋ค์ง N x M ํฌ๊ธฐ์ ์ ์ฌ๊ฐํ
๊ฐ๊ฐ์ ์นธ์ ์ก์ง ๋๋ ๋ฐ๋ค, ์บ๋ฆญํฐ๋ ๋์๋จ๋ถ ์ค ํ ๊ณณ์ ๋ฐ๋ผ๋ด
๋งต์ ๊ฐ ์นธ์ (A, B)๋ก ๋ํ๋ผ ์ ์๊ณ , A๋ ๋ถ์ชฝ์ผ๋ก๋ถํฐ ๋จ์ด์ง ์นธ์ ๊ฐ์, B๋ ์์ชฝ์ผ๋ก๋ถํฐ ๋จ์ด์ง ์นธ์ ๊ฐ์์
์บ๋ฆญํฐ๋ ์ํ์ข์ฐ๋ก ์์ง์ผ ์ ์๊ณ , ๋ฐ๋ค๋ก ๋์ด ์๋ ๊ณต๊ฐ์๋ ๊ฐ ์ ์์
์๋๋ ์บ๋ฆญํฐ์ ์์ง์์ ์ค์ ํ๊ธฐ ์ํด ์ ํด ๋์ ๋งค๋ด์ผ
ย 1. ํ ์์น์์ ํ์ฌ ๋ฐฉํฅ์ ๊ธฐ์ค์ผ๋ก ์ผ์ชฝ ๋ฐฉํฅ(๋ฐ์๊ณ ๋ฐฉํฅ์ผ๋ก 90๋ ํ์ ํ ๋ฐฉํฅ)๋ถํฐ ์ฐจ๋ก๋๋ก ๊ฐ ๊ณณ์ ์ ํจ
ย 2. ์บ๋ฆญํฐ์ ๋ฐ๋ก ์ผ์ชฝ ๋ฐฉํฅ์ ์์ง ๊ฐ๋ณด์ง ์์ ์นธ์ด ์กด์ฌํ๋ค๋ฉด, ์ผ์ชฝ ๋ฐฉํฅ์ผ๋ก ํ์ ํ ๋ค์ ์ผ์ชฝ์ผ๋ก ํ ์นธ์ ์ ์งํจ // ์ผ์ชฝ ๋ฐฉํฅ์ ๊ฐ๋ณด์ง ์์ ์นธ์ด ์๋ค๋ฉด, ์ผ์ชฝ ๋ฐฉํฅ์ผ๋ก ํ์ ๋ง ์ํํ๊ณ 1๋จ๊ณ๋ก ๋์๊ฐ
ย 3. ๋ง์ฝ ๋ค ๋ฐฉํฅ ๋ชจ๋ ์ด๋ฏธ ๊ฐ๋ณธ ์นธ์ด๊ฑฐ๋ ๋ฐ๋ค๋ก ๋์ด ์๋ ์นธ์ธ ๊ฒฝ์ฐ, ๋ฐ๋ผ๋ณด๋ ๋ฐฉํฅ์ ์ ์งํ ์ฑ๋ก ํ ์นธ ๋ค๋ก ๊ฐ๊ณ 1๋จ๊ณ๋ก ๋์๊ฐ // ๋จ, ์ด๋ ๋ค์ชฝ ๋ฐฉํฅ์ด ๋ฐ๋ค์ธ ์นธ์ด๋ผ ๋ค๋ก ๊ฐ ์ ์๋ ๊ฒฝ์ฐ์๋ ์์ง์์ ๋ฉ์ถค
๋งค๋ด์ผ์ ๋ฐ๋ผ ์บ๋ฆญํฐ๋ฅผ ์ด๋์ํจ ๋ค, ์บ๋ฆญํฐ๊ฐ ๋ฐฉ๋ฌธํ ์นธ์ ์๋ฅผ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ๋ง๋์์ค
์ ํ์ ์ธ ์๋ฎฌ๋ ์ด์
๋ฌธ์ , ์๊ตฌํ๋ ๋ด์ฉ์ ์ค๋ฅ ์์ด ์ฑ์คํ ๊ตฌํ๋ง ํ๋ฉด ํ ์ ์์
๋จ, ๋ฌธ์ ๋ฅผ ๋ฐ๋ฅด๊ฒ ์ดํดํ์ฌ ์์ค์ฝ๋๋ก ์ฎ๊ธฐ๋ ๊ณผ์ ์ด ๊ฐ๋จํ์ง ์์ => ๋ฐ๋ณต์ ์ธ ์๋ฌ ํ์
๋ฐฉํฅ์ ์ค์ ํด์ ์ด๋ํ๋ ๋ฌธ์ ์ ํ์์๋ dx, dy๋ผ๋ ๋ณ๋์ ๋ฆฌ์คํธ๋ฅผ ๋ง๋ค์ด ๋ฐฉํฅ ์ ํ๋ ๊ฒ์ด ํจ๊ณผ์
2์ฐจ์ ๋ฆฌ์คํธ๋ฅผ ์ ์ธํ ๋๋ ์ปดํ๋ฆฌํจ์
์ ์ด์ฉํ๋ ๊ฒ์ด ํจ์จ์
๐ ์ด๊ฒ์ด ์ฝ๋ฉ ํ ์คํธ๋ค ๊ต์ฌ๋ฅผ ํตํด ํ์ตํ ๋ด์ฉ์ ์ ๋ฆฌํ์์ต๋๋ค.