jungol:problem_1707
정올 문제 풀이
문제 번호: 1707
#include <stdio.h> #define SIZE_D 101 int main(int argc, char* argv[]) { int n = 0; int i = 0; int j = 0; int d = 0; int dx = 0; int dy = 0; int direction = 0; int data_arr[SIZE_D][SIZE_D] = {{0}, }; scanf("%d", &n); for (j = 0; j < n; j++) { for (i = 0; i < n; i++) { if (direction == 0) { data_arr[dy][dx] = d + 1; if (dx + 1 < n && data_arr[dy][dx + 1] == 0) { dx = dx + 1; } else { direction = 1; dy = dy + 1; } } else if (direction == 1) { data_arr[dy][dx] = d + 1; if (dy + 1 < n && data_arr[dy + 1][dx] == 0) { dy = dy + 1; } else { direction = 2; dx = dx - 1; } } else if (direction == 2) { data_arr[dy][dx] = d + 1; if (dx - 1 > -1 && data_arr[dy][dx - 1] == 0) { dx = dx - 1; } else { direction = 3; dy = dy - 1; } } else { data_arr[dy][dx] = d + 1; if (dy - 1 > -1 && data_arr[dy - 1][dx] == 0) { dy = dy - 1; } else { direction = 0; dx = dx + 1; } } d++; } } for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { printf("%d ", data_arr[i][j]); } printf("\n"); } //printf("argc=%d, argv=%s\n", argc, argv[0]); return 0; }
진행 방향을 기록하는 변수를 두고 그에 맞게 한칸씩 이동하면서 값이 배열에 달팽이 모양으로 채워지도록 함. 생각보다 풀기가 어려웠던 것 같다.
jungol/problem_1707.txt · 마지막으로 수정됨: 2016/04/30 23:32 저자 lindol