-
코딩도장 Spiral Array 채우기Programming/Algorithm 2015. 11. 4. 01:37
Question
입력값을 6 6 을 주면 아래와 같이 6*6 매트릭스에 나선형 회전을 한 값을 출력해야 한다.
6 6 0 1 2 3 4 5 19 20 21 22 23 6 18 31 32 33 24 7 17 30 35 34 25 8 16 29 28 27 26 9 15 14 13 12 11 10
Answer
# Input, map size and make default map n, m = 6, 6 board = [[-1 for i in range(m)] for j in range(n)] # x and y is starting point # dx and dy is amount of moving # count is x, y = 0, 0 dx, dy = 0, 1 count = 0 while board[x][y] == -1: board[x][y] = count count += 1 x, y = x + dx, y + dy if x in [-1, n] or y in [-1, m] or board[x][y] != -1: x, y = x - dx, y-dy dx, dy = dy, -dx x, y = x + dx, y + dy for i in range(n): print(board[i])
방향이 오른쪽> 아래쪽> 왼쪽> 위쪽 으로 변하는데, 이 때 dx 와 dy 값이 잘 보면 서로 바뀌는 규칙이 있어, 이것을 사용한다.