200904_TIL

hyeojung·2020년 9월 4일
0

TIL

목록 보기
23/62
post-thumbnail

윤성우의 열혈 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");
	}
}

오늘 공부하면서 느낀 점

  • 머리가 안돌아가서 이 문제 푸는 데 엄청 오래 걸렸다...
  • 좌절하지 말고 멘탈 잡고 공부하자! 꼭!
profile
응애 나 애기 개발자

0개의 댓글