https://www.acmicpc.net/problem/1913
1913๋ฒ: ๋ฌํฝ์ด
N๊ฐ์ ์ค์ ๊ฑธ์ณ ํ๋ฅผ ์ถ๋ ฅํ๋ค. ๊ฐ ์ค์ N๊ฐ์ ์์ฐ์๋ฅผ ํ ์นธ์ฉ ๋์ด์ ์ถ๋ ฅํ๋ฉด ๋๋ฉฐ, ์๋ฆฟ์๋ฅผ ๋ง์ถ ํ์๊ฐ ์๋ค. N+1๋ฒ์งธ ์ค์๋ ์ ๋ ฅ๋ฐ์ ์์ฐ์์ ์ขํ๋ฅผ ๋ํ๋ด๋ ๋ ์ ์๋ฅผ ํ ์นธ ๋์ด์
www.acmicpc.net
n*n์ง๋ฆฌ ๋ฐฐ์ด์ ๋ง๋ค๊ณ ,
์ด๋ฐ์์ผ๋ก ์ญ์ญ ์ฑ์์ฃผ์๋ค.
ํ์ง์ด ์ ์ด๋ ์ง?
์๋ฌดํผ ์ด๋ ๊ฒ ์์ฑํ ์ ์งํ ์ฝ๋
n = int(input())
table = [[0 for j in range(n)] for i in range(n)]
target = int(input())
# ์ ๊ฐ์ด๋ฐ ์ขํ ๊ตฌํ๊ธฐ
x, y = n//2+1, n//2+1
# 1์ ์ฑ์๋ฃ๊ธฐ
val = 1
table[x-1][y-1] = val
# ์ค๋ฅธ์ชฝ, ์๋, ์ผ์ชฝ, ์
dx = [0,1,0,-1]
dy = [1,0,-1,0]
# ํ ๊ป๋ฐ๊ธฐ์ฉ ์ฑ์๋ฃ๊ธฐ
for i in range(3,n+1,2):
# ์ถ๋ฐ์ขํ๋ก ์ด๋ (์ผ์ชฝ ๋๊ฐ์ )
x, y = x-1, y-1
# ์ค๋ฅธ์ชฝ - ์๋ - ์ผ์ชฝ - ์ ์์๋๋ก
for j in range(4):
# ๊ฐ๊ฐ n-1์นธ์ฉ ์ฑ์ฐ๊ธฐ
for k in range(i-1):
val += 1
x += dx[j]
y += dy[j]
table[x-1][y-1]=val
# ๊ฒฐ๊ณผ ์ถ๋ ฅ
tx, ty = 0,0
for i in range(n):
for j in range(n):
print(table[i][j],end=' ')
if table[i][j]==target:
tx,ty = i+1, j+1
print()
print(tx,ty)
๋ค๋ฅธ ์ฌ๋๋ค ์ฝ๋๋ ์ฌ๋ฌ ๊ฐ ๊ตฌ๊ฒฝํด๋ดค๋ค.
๋๋ ๋๊ฐ์ด ํผ ์ฌ๋๋ ์์๊ณ , ๋น์ทํ ํ์ด๊ฐ ๋๋ถ๋ถ์ด์๋ค.
๋จ์๊ตฌํ ๋ฌธ์ ์ธ ๋งํผ ๊ท์น์ ๋น ๋ฅด๊ฒ ์ฐพ์๋ด๊ณ , ์ซ์๋ฅผ ์ฑ์๊ฐ๋ฉด์ ๋ฐฉํฅ์ ์ ์ ํ ๋ฐ๊ฟ์ฃผ๋ ๊ฒ์ด ์ค์ํ ๋ฏํ๋ค.
๊ธฐ์ต์ ๋จ์ ํ์ด๋ ๋งจ ๋ฐ๊นฅ์ชฝ๋ถํฐ ์์ํ์ฌ n, n-1, n-2, ... , 1 ์์๋๋ก ์ฑ์๋ฃ์ ํ์ด์๋ค.
์ธ๋ฑ์ค๊ฐ ๋ฐฐ์ด์ ๋ฒ์๋ฅผ ๋ฒ์ด๋๊ฑฐ๋, ์ด๋ฏธ ์ฑ์์ง ์นธ์ ๋ง๋ ๋๋ง๋ค ๋ฐฉํฅ์ ๋ฐ๊ฟ์ฃผ๋ฉด ๋๋ฏ๋ก
๊ตฌํ ๋ก์ง์ ์๊ฐํด๋ด๋ ๊ฒ ์์ฒด๊ฐ ํจ์ฌ ๊ฐ๋จํด ๋ณด์๋ค.
'์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ์ด > ๊ตฌํ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค]ํธ๋ ํ์ดํธ ๋ํ (0) | 2023.05.14 |
---|---|
[๋ฐฑ์ค]2621๋ฒ: ์นด๋๊ฒ์ (0) | 2023.05.13 |
[๋ฐฑ์ค]10972๋ฒ: ๋ค์ ์์ด / 10973๋ฒ: ์ด์ ์์ด (0) | 2023.05.09 |
[๋ฐฑ์ค]17413๋ฒ: ๋จ์ด ๋ค์ง๊ธฐ 2 (0) | 2023.05.09 |
[๋ฐฑ์ค]1193๋ฒ: ๋ถ์์ฐพ๊ธฐ (0) | 2023.05.04 |