ํ’€์ด


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

References