본문 바로가기
Algorithm 🧑🏻‍💻/CodeUp

1484 : 2차원 배열 달팽이(1)

by 안주형 2022. 3. 14.

문제

 

[기초-배열연습] 2차원 배열 달팽이 채우기 4-1

다음과 같은 n*m 배열 구조를 출력해보자. 입력이 3 4인 경우 다음과 같이 출력한다. 1 2 3 4 10 11 12 5 9 8 7 6 입력이 4 5인 경우는 다음과 같이 출력한다. 1 2 3 4 5 14 15 16 17 6 13 20 19 18 7 12 11 10 9 8 입력이

codeup.kr

 

코드

#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

댓글