문제
코드
#include <iostream>
using namespace std;
int main(){
ios_base::sync_with_stdio(false);
cin.tie(0);
int N,M; cin>>N>>M;
int num = 1;
int loop = N*M;
int arr[101][101] = {0,};
int x = 0, y = 0;
int right_left_cnt = M, down_up_cnt = N-1;
for(int i=0; i<loop; i++){
switch(i%4){
case 0:
if(arr[x][y]!=0) break;
for(int k=0; k<right_left_cnt; k++){
arr[x][y] = num;
num++;
y++;
}
y--;
x++;
right_left_cnt--;
break;
case 1:
if(arr[x][y]!=0) break;
for(int k=0; k<down_up_cnt; k++){
arr[x][y] = num;
num++;
x++;
}
x--;
y--;
down_up_cnt--;
break;
case 2:
if(arr[x][y]!=0) break;
for(int k=0; k<right_left_cnt; k++){
arr[x][y]=num;
num++;
y--;
}
x--;
y++;
right_left_cnt--;
break;
case 3:
if(arr[x][y]!=0) break;
for(int k=0; k<down_up_cnt; k++){
arr[x][y]=num;
num++;
x--;
}
x++;
y++;
down_up_cnt--;
break;
}
}
for(int i=0; i<N; i++){
for(int k=0; k<M; k++){
cout<<arr[i][k]<<' ';
}
cout<<'\n';
}
}
풀이
'Algorithm 🧑🏻💻 > CodeUp' 카테고리의 다른 글
1485 : 2차원 배열 달팽이(2) (0) | 2022.03.14 |
---|---|
3510 : 예산 관리 (0) | 2022.01.16 |
3701 : 파스칼 삼각형 (0) | 2022.01.16 |
1510 : 홀수 마방진 (0) | 2022.01.16 |
4503 : 바이러스 (0) | 2022.01.14 |
3705 : 연속된 구간의 최대합 (0) | 2022.01.14 |
댓글