15367 : Spirale

풀이

달.팽.이.조.아.!.!

코드

#include <cstdio>
#include <algorithm>

const int dx[2][4] = { {0,-1,0,1},{0,-1,0,1} };
const int dy[2][4] = { {-1,0,1,0},{1,0,-1,0} };

int n, m, k;
int a[500][500];

int main() {
	scanf("%d %d %d", &n, &m, &k);
	while (k--) {
		int x, y, c, num = 1, cnt = 2, dir = 0;
		scanf("%d %d %d", &x, &y, &c);
		x += 249, y += 249;
		if (!a[x][y]) a[x][y] = 1;
		while (dir < 170) {
			for (int i = 0; i < (dir+1) / 2; i++) {
				x += dx[c][dir % 4], y += dy[c][dir % 4];
				if (a[x][y] != 0) a[x][y] = std::min(a[x][y], num);
				else a[x][y] = num;
				num++;
			}
			if (num == 1) {
				a[x][y] = 1;
				num++;
			}
			dir++;
		}
	}

	for (int i = 250; i < 250 + n; i++) {
		for (int j = 250; j < 250 + m; j++) {
			printf("%d ", a[i][j]);
		}
		puts("");
	}
	return 0;
}

아무말

백준, 백준 온라인 저지, BOJ, Baekjoon Online Judge, C, C++, 씨, 씨쁠쁠, JAVA, algorithm, 자바, 알고리즘, 자료구조, 문제, 문제 풀이, 풀이

wookje.kwon's profile image

wookje.kwon

2018-09-17 12:24

Read more posts by this author