문제
코드
#include <iostream>
using namespace std;
int main(){
ios_base::sync_with_stdio(false);
cin.tie(0);
int n,m; cin>>n>>m;
int left_right_cnt = m, up_down_cnt = n-1;
int arr[101][101] = {0, };
int num = n*m;
int x=0, y=0;
for(int i=0; i<n*m; i++){
if(arr[x][y]!=0) break;
switch(i%4){
case 0: //오른쪽 방향
for(int k=0; k<left_right_cnt; k++){
arr[x][y] = num;
num--;
y++;
}
y--;
x++;
left_right_cnt--;
break;
case 1: //아래쪽 방향
for(int k=0; k<up_down_cnt; k++){
arr[x][y] = num;
num--;
x++;
}
x--;
y--;
up_down_cnt--;
break;
case 2: //왼쪽 방향
for(int k=0; k<left_right_cnt; k++){
arr[x][y] = num;
num--;
y--;
}
y++;
x--;
left_right_cnt--;
break;
case 3: //위쪽 방향
for(int k=0; k<up_down_cnt; k++){
arr[x][y] = num;
num--;
x--;
}
x++;
y++;
up_down_cnt--;
break;
}
}
for(int i=0; i<n; i++){
for(int k=0; k<m; k++){
cout<<arr[i][k]<<' ';
}
cout<<'\n';
}
}
풀이(10분)
달팽이를 박살내고있습니다.
'Algorithm 🧑🏻💻 > CodeUp' 카테고리의 다른 글
1484 : 2차원 배열 달팽이(1) (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 |
댓글