https://www.acmicpc.net/problem/1913
달팽이 회전 원리가 헷갈리면 무조건 이 문제 푸는 걸 강추한다.
나는 이 외에도 달팽이 회전 문제를 하도 많이 풀었더니 외워버렸다.. (feat. 상어 시리즈)
import sys
input = sys.stdin.readline
N = int(input())
Want = int(input())
board = [[0] * N for _ in range(N)]
di = [-1, 0, 1, 0]
dj = [0, 1, 0, -1]
ci, cj = N // 2, N // 2
max_count, count, flag = 1, 0, 0
dr = 0
num = 1
board[ci][cj] = 1
while (ci, cj) != (0, 0):
num += 1
count += 1
ci, cj = ci + di[dr], cj + dj[dr]
board[ci][cj] = num
if count == max_count:
count = 0
dr = (dr+1) % 4
if flag == 0:
flag = 1
else:
flag = 0
max_count += 1
for i in range(N):
print(*board[i])
for i in range(N):
for j in range(N):
if board[i][j] == Want:
print(i+1, j+1)
break
'PS > 백준' 카테고리의 다른 글
[백준] 21610번 마법사 상어와 비바라기 (python 정답 코드) (0) | 2024.10.09 |
---|---|
[백준] 14890번 경사로 (python 정답 코드) (0) | 2024.10.08 |
[백준] 19236번 청소년 상어 (python 정답 코드) (0) | 2024.10.08 |
[백준] 14891번 톱니바퀴 (python) (2) | 2024.09.06 |
[백준] 3190번 뱀 (python) (0) | 2024.09.05 |