윤성우의 열혈 C 프로그래밍
도전 프로그래밍 3
- 406~411p
 
- 개강을 해버렸고 지금 하고 있는 일이 비대면으로 전면 전환되어서 당분간은 많이 바쁠 것 같다. 그래서 여러 차례에 걸쳐 코드를 작성하려고 한다.
 
- 작성한 코드는 기록용으로 아래 남겨 둔다.
 
문제 2 : 달팽이 배열을 만들고 출력하기
#include <stdio.h>
#include <stdlib.h>
void snail_arr(int n, int** m) {
	int num = 1;
	int repeat = n % 2 != 0 ? n - 1 : n;
	int x = -1; int y = 0;
	int next = 1;
	for (int i = n; i > 0; i--) {
		for (int j = 0; j < i; j++) {
			x += next;
			m[y][x] = num++;
		}
		for (int k = 1; k < i; k++) {
			y += next;
			m[y][x] = num++;
		}
		next *= -1;
	}
	if (n % 2 != 0)
		m[n / 2][n / 2] = --num;
}
int main() {
	int n;
	printf("숫자를 입력하시오: ");
	scanf("%d", &n);
    int** m = malloc(sizeof(int*) * n);
	for (int i = 0; i < n; i++)
		*(m + i) = malloc(sizeof(int) * n);
	snail_arr(n, m);
	for (int i = 0; i < n; i++) {
		for (int j = 0; j < n; j++)
			printf("%d\t", *(*(m + i) + j));
		printf("\n\n");
	}
}
오늘 공부하면서 느낀 점
- 머리가 안돌아가서 이 문제 푸는 데 엄청 오래 걸렸다...
 
- 좌절하지 말고 멘탈 잡고 공부하자! 꼭!