#include <iostream>

#define size 5 

int main() {

int table[size][size],

si,sj;//입력시작할세로가로

si=sj=size/2;

int 

count  = 1,//기록할 숫자 

len    = 1,//한번에 직진할 거리 

ic=0,jc= 0,//세로가로이동횟수

ia=1,ja=-1;//↕↔방향

for(;;){

table[si][sj] = count;

if(size*size <= count++) break;

_re:

if(len > jc++){ sj+=ja; continue; }

if(len > ic++){ si+=ia; continue; }


len++;

ic=jc=0;

ia*=-1;

ja*=-1;

goto _re;

}


for(int i = 0;i<size;i++){

for(int j = 0;j<size;j++){

printf("M", table[i][j]);

}

printf("\n");

}//그냥 출력만하는 부분 

return 0;

}


----------------------------------------------------

땔감학원에서 과제로 내줘서 오랜만에 짜봤는데

자바기반이라 goto못쓰고 조건문으로 때운거

cpp로 포팅해서 돌려봄.

가운데서 입력시작하는건 좀 병신같은듯

ㅁㅌㅊ?