윤성우의 열혈 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");
}
}
오늘 공부하면서 느낀 점
- 머리가 안돌아가서 이 문제 푸는 데 엄청 오래 걸렸다...
- 좌절하지 말고 멘탈 잡고 공부하자! 꼭!