풀이
nxn 배열에서 나선형으로 숫자가 배치될 때 입력된 숫자의 좌표를 출력하는 문제이다.
숫자들을 나선형으로 배치해야하기 때문에 배열의 끝에 닫거나 이미 숫자가 있는 자리일 경우 우측으로 회전하는 식으로 dx dy 를 선언해주었고 찾고자하는 숫자가 배치되었을 경우 해당 좌표를 출력하는 식으로 반복문을 짰다.
소스코드
# 자리배정
import sys
input = sys.stdin.readline
dx = [0, 1, 0, -1]
dy = [1, 0, -1, 0]
c, r = map(int, input().split())
k = int(input())
board = [[0] * r for _ in range(c)]
x, y = 0, 0
board[x][y] = 1
i = 0
while True:
if k > c*r:
print(0)
break
if board[x][y] == k:
print(x+1, y+1)
break
nx = x + dx[i]
ny = y + dy[i]
if 0 <= nx < c and 0 <= ny < r and board[nx][ny] == 0:
board[nx][ny] = board[x][y] + 1
x, y = nx, ny
else:
i = (i + 1) % 4