풀이 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 BOJ 10157 - 자리배정