C언어 알고리즘 정리 및 실무 프로젝트

C언어 이중 for문과 배열을 이용한 달팽이 배열 알고리즘 본문

C언어 알고리즘

C언어 이중 for문과 배열을 이용한 달팽이 배열 알고리즘

C's everything! 2022. 5. 20. 00:08
반응형

전체의 큰 for문 안에 각기 다른 조건 4개를 넣어줌으로써 기능별로 세분화해서 이해할 수 있도록 구성하였습니다.

#include <stdio.h>

int main() {

	int count = 0; // 숫자 카운트 (V)

	int num[6][6];   // 달팽이 배열

	int a = 1; // 가로 행 증가 변수
	int b = 1; // 세로 열 증가 변수
	int c = 1; // 가로 행 감소 변수
	int d = 1; // 세로 열 감소 변수


	for (int j = 1; j <= 9; j++) {	// 전체 9번 반복
    
		if (j % 4 == 1) {	// j가 1,5,9일 때
			for (int k = a; k <= 6 - a; k++) {	// 가로 행 증가일 경우
				count += 1;
				num[a][k] = count;
			}
			a++;

		}

		else if (j % 4 == 2) {	// j가 2,6일 때
			for (int k = b + 1; k <= 6 - b; k++) {	// 세로 열 증가일 경우
				count += 1;
				num[k][6 - b] = count;
			}
			b++;
		}

		else if (j % 4 == 3) {	// j가 3,7일 때
			for (int k = 5 - c; k >= c; k--) {	// 가로 행 감소일 경우
				count += 1;
				num[6 - c][k] = count;
			}
			c++;
		}

		else {			//	j가 4,8일 때
			for (int k = 5 - d; k >= d + 1; k--) {	// 세로 열 감소일 경우
				count += 1;
				num[k][d] = count;
			}
			d++;
		}

	} // 최외곽 for문
    
    
	for (int e = 1; e <= 5; e++) {		// 달팽이 구조로 넣어진 값들을 출력한다.
		for (int f = 1; f <= 5; f++) {
			printf("%-2d ", num[e][f]);
		}
		printf("\n");
	}

	return 0;
}
반응형
Comments