[자료구조] 지그재그 배열 문제

dusruddl2·2023년 8월 18일
0

자료구조

목록 보기
22/23

문제

NM(1<=N,M<=100)N*M(1<=N,M<=100) 크기의 행렬에 1 MN1~MN의 수를 대각선 방향으로 채운 결과를 출력하라

ex) 444*4, 555*5 행렬일 때의 예시


코드

#include <stdio.h>
#include <stdlib.h>

int main() {
    int i = 0, j = 0, N, M;
    scanf("%d %d", &N, &M);

    int X[100][100] = { 0 };

    // 배열 채우기
    int num = 1;
    // i = 0 일 때
    for (i = 0, j = 0; j < M; j++) {
        int k = j; //k는 j값을 저장하는 변수
        while (i < N && k != -1) {
            X[i][k] = num++;
            i++; k--;
        }
        i = 0; // i값 초기화
    }

    // j = M - 1 일 때
    for (i = 1, j = M - 1; i < N; i++) {
        int k = i; //k는 j값을 저장하는 변수
        while (k != N) {
            X[k][j] = num++;
            k++; j--;
        }
        j = M - 1; // j값 초기화
    }

    // 결과 출력
    for (i = 0; i < N; i++) {
        for (j = 0; j < M; j++) {
            printf(" %d", X[i][j]);
        }
        printf("\n");
    }

    return 0;
}

풀이

아래 그림과 같이 두 파트로 나누기로 했다

  1. (i,j)(i,j)에서 i=0i=0인 경우
  2. (i,j)(i,j)에서 j=M1j=M-1인 경우
profile
정리된 글은 https://dusruddl2.tistory.com/로 이동

0개의 댓글