-
[Python] ๋ฐฑ์ค - 1913 ๋ฌํฝ์ด(๊ธฐ์ด ๋ฐฐ์ด๋ค๋ฃจ๊ธฐ)__Python/__Algorithm 2022. 3. 24. 12:42
๋ฌธ์
https://www.acmicpc.net/problem/1913
๐น ๋ฌธ์
ํ์์ธ ์์ฐ์ N์ด ์ฃผ์ด์ง๋ฉด, ๋ค์๊ณผ ๊ฐ์ด 1๋ถํฐ N2๊น์ง์ ์์ฐ์๋ฅผ ๋ฌํฝ์ด ๋ชจ์์ผ๋ก N×N์ ํ์ ์ฑ์ธ ์ ์๋ค.
N์ด ์ฃผ์ด์ก์ ๋, ์ด๋ฌํ ํ๋ฅผ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค. ๋ํ N2 ์ดํ์ ์์ฐ์๊ฐ ํ๋ ์ฃผ์ด์ก์ ๋, ๊ทธ ์ขํ๋ ํจ๊ป ์ถ๋ ฅํ์์ค. ์๋ฅผ ๋ค์ด N=5์ธ ๊ฒฝ์ฐ 6์ ์ขํ๋ (4,3)์ด๋ค.๐น ์ ๋ ฅ
์ฒซ์งธ ์ค์ ํ์์ธ ์์ฐ์ N(3 ≤ N ≤ 999)์ด ์ฃผ์ด์ง๋ค. ๋์งธ ์ค์๋ ์์น๋ฅผ ์ฐพ๊ณ ์ ํ๋ N2 ์ดํ์ ์์ฐ์๊ฐ ํ๋ ์ฃผ์ด์ง๋ค.
๐น ์ถ๋ ฅ
N๊ฐ์ ์ค์ ๊ฑธ์ณ ํ๋ฅผ ์ถ๋ ฅํ๋ค. ๊ฐ ์ค์ N๊ฐ์ ์์ฐ์๋ฅผ ํ ์นธ์ฉ ๋์ด์ ์ถ๋ ฅํ๋ฉด ๋๋ฉฐ, ์๋ฆฟ์๋ฅผ ๋ง์ถ ํ์๊ฐ ์๋ค. N+1๋ฒ์งธ ์ค์๋ ์ ๋ ฅ๋ฐ์ ์์ฐ์์ ์ขํ๋ฅผ ๋ํ๋ด๋ ๋ ์ ์๋ฅผ ํ ์นธ ๋์ด์ ์ถ๋ ฅํ๋ค.
ํ์ด ๋ฐฉ๋ฒ
๐น ์ด์ฐจ์ ๋ฐฐ์ด ๊ตฌํ
๐น DFS ์์ด ๊ฐ๋ฅํ๋ค
๐น (0,0)์์ ์์ํด [ํ → ์ฐ → ์ → ์ข] ๋ฐฉํฅ์ผ๋ก ์ด๋ํ๋ฉฐ ๋ฐฐ์ด์ ์ฑ์ด๋ค.
- ๋ฐฉํฅ์ ๋ฐ๋ผ ์์ฐจ์ ์ผ๋ก ์งํํ๋ฉฐ, ๋ฒฝ์ ๋ถ๋ชํ๋ฉด ๋ฐฉํฅ์ ๋ฐ๊พผ๋ค.
(๋ฐฐ์ด์ ๋ฒ์๋ฅผ ๋์ด์๊ฑฐ๋, ์ด๋ฏธ ํด๋น ์์น์ ๊ฐ์ด ์ฑ์์ง ๊ฒฝ์ฐ ๋ฒฝ์ผ๋ก ๊ฐ์ฃผ.) - ๋ฐฉํฅ์ ๋ฐ๊พธ๋ฉด, ๋ค์ ์์น๊ฐ์ ์ง์ ํ๋ค.
- ๋ฐฉํฅ ๋ณ๊ฒฝ ์, 0 → 1 → 2 → 3 (ํ์ฐ์์ข) ์งํ ํ ๋ค์ ์๋ ๋ฐฉํฅ(์ธ๋ฑ์ค 0)์ผ๋ก ๋์๊ฐ์ผํ๋ฏ๋ก, ๋๋จธ์ง๋ฅผ ํ์ฉ
(0,1,2,3), (4,5,6,7) → %4 → (0,1,2,3) - ๋ฌธ์ ์์ ์ ํ ๊ฐ(target)์ด ๋์ค๋ฉด ํด๋น ์์น ์ ์ฅ.
๊ตฌํ ์ฝ๋
import sys n = int(sys.stdin.readline()) target = int(sys.stdin.readline()) arr = [[0] * n for _ in range(n)] dx = [1,0,-1,0] dy = [0,1,0,-1] x,y = 0,0 cnt = n**2 d = 0 x_,y_ = 0,0 while cnt>0: arr[x][y] = cnt if cnt == target: x_,y_ = x+1,y+1 cnt-=1 nx = x+dx[d] ny = y+dy[d] if nx < 0 or nx >= n or ny <0 or ny >= n or arr[nx][ny]!=0: d = (d+1)%4 nx = x+dx[d] ny = y+dy[d] x,y = nx,ny for row in arr: print(*row) print(x_, y_)
์คํ ๊ฒฐ๊ณผ
๐ก
๐น ์์์ ์์น(์ด๊ธฐ x,y ์ ์ธ)์ ์งํ ๋ฐฉํฅ(dx,dy), ๋ฐฐ์ด์ ๋ฃ๋ ๊ฐ(cnt)์ ๋ณํํ์ฌ ๋ค์ํ ๋ชจ์์ ๋ฌํฝ์ด ๋ฐฐ์ด์ ๋ง๋ค ์ ์๋ค.
728x90'__Python > __Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Python] ๋ฐฑ์ค - 2559 ์์ด (0) 2022.03.24 [Python] ๋ฐฑ์ค - 1952 ๋ฌํฝ์ด 2 (0) 2022.03.24 [Python] ๋ฐฑ์ค - 2468 ์์ ์์ญ (0) 2022.02.22 [Python] ๋ฐฑ์ค - 7569 ํ ๋งํ (0) 2022.02.12 [Python] ๋ฐฑ์ค - 1439 ๋ค์ง๊ธฐ (0) 2022.01.27 - ๋ฐฉํฅ์ ๋ฐ๋ผ ์์ฐจ์ ์ผ๋ก ์งํํ๋ฉฐ, ๋ฒฝ์ ๋ถ๋ชํ๋ฉด ๋ฐฉํฅ์ ๋ฐ๊พผ๋ค.