티스토리 뷰
다음과 같이 출력되는
알고리즘을 작성해 보세요
#pragma warning(disable : 4996)
#include <stdio.h>
int main(){
int input;
scanf(" %d", &input); //출력할 사이즈를 입력받는다.
int print = 1;
int t=0, l=0; //t = 세로, l = 가로
int check = input,checks=0; //check = 배열의 최대값, checks = 배열의 최소값
int arr[100][100] = { 0, };
for (int i = 0; i < input; i++){ //input 회수만큼 for문을 돌린다.
for (; l < check;l++){ //맨 윗줄 가로열 저장
arr[t][l] = print;
print++;
}
l--; //가로를 초과하였기 때문에 -1
t++;
for (; t < check; t++){ //오른쪽 세로열 저장
arr[t][l] = print;
print++;
}
t--; //세로를 초과하였기 때문에 -1
l--;
for (; l >= checks; l--){ //맨 아래줄 가로열 저장
arr[t][l] = print;
print++;
}
l++; //가로를 초과(-1) 하였기 때문에 +1
t--;
for (; t > checks; t--){ //왼쪽 세로열 저장
arr[t][l] = print;
print++;
}
t++; //가로,세로를 초과(0)하였기 때문에 +1
l++; //여기서 가로, 세로가 초과한 이유는 이전 회전보다 1증가한값(바깥라인보다 한칸 작은라인)이여야 하기 때문 입니다.
checks++; //배열의 최소값 증가
check--; //배열의 최대값 감소
}
for (int i = 0; i < input; i++){
for (int j = 0; j < input; j++){
printf(" %4d", arr[i][j]);
}
printf("\n");
}
return 0;
}
'프로그래밍 > 알고리즘' 카테고리의 다른 글
이진 탐색 알고리즘(Binary Search) (419) | 2015.10.21 |
---|---|
퀵 정렬 알고리즘 (435) | 2015.07.17 |
c언어 알고리즘 - 개미수열 (411) | 2015.07.15 |
c언어 알고리즘 - 파스칼의 삼각형 (425) | 2015.07.15 |
c언어 - 알고리즘 (383) | 2015.06.14 |