티스토리 뷰

프로그래밍/알고리즘

c언어 - 알고리즘

박스여우 2015. 6. 14. 11:49

 다음과 같이 출력되는

알고리즘을 작성해 보세요

 

 

 

 

 

 

 

#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
댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함