C언어 배열 질문입니다!!ㅠㅡㅠ

조회수 62회
#include <stdio.h>

int main(void)
{
    int t,n;
    int tarr[10][10];

    scanf("%d", &t);

    for (int c = 1; c <= t; c++)
    {
        scanf("%d", &n); //n x n의 달팽이 배열 
        printf("#%d\n", c); //몇 번째 테스트 인지
        int num = 1;
        int m = n;
        int x = 0, y = 0, p = 1;

        while (m > 0)
        {
            for (int i = 0; i < m; i++)
            {
                tarr[x][y] = num;
                num++;
                y = y + p;
                if (y >= n || y < 0)
                {
                    y = y - p;
                }
            }
            m--;

            for (int i = 0; i < m; i++)
            {
                x = x + p;
                tarr[x][y] = num;
                num++;
            }
            p = -p;
            y = y + p;

        }

        for (int i = 0; i < n; i++) //출력
        {
            for (int j = 0; j < n; j++)
            {
                printf("%d ", tarr[i][j]);
            }
            printf("\n");
        }

    }

    return 0;
}

문제 : https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5PobmqAPoDFAUq&categoryId=AV5PobmqAPoDFAUq&categoryType=CODE&&& 달팽이는 1부터 N*N까지의 숫자가 시계방향으로 이루어져 있다.

다음과 같이 정수 N을 입력 받아 N크기의 달팽이를 출력하시오.

[예제]

N이 3일 경우,

이미지

N이 4일 경우,

이미지

[제약사항]

달팽이의 크기 N은 1 이상 10 이하의 정수이다. (1 ≤ N ≤ 10)

[입력]

가장 첫 줄에는 테스트 케이스의 개수 T가 주어지고, 그 아래로 각 테스트 케이스가 주어진다.

각 테스트 케이스에는 N이 주어진다.

[출력]

각 줄은 '#t'로 시작하고, 다음 줄부터 빈칸을 사이에 두고 달팽이 숫자를 출력한다.

(t는 테스트 케이스의 번호를 의미하며 1부터 시작한다.)

위 문제에 대해 제가 작성한 코드입니다. 실행해보면

이미지

이런 결과가 나옵니다. 3을 입력했을 때는 정상적으로 작동하는데 4를 입력하면 오류가 떠요ㅠㅠ 계속 수정 중인데 어디를 건드려야 할지 모르겠어요ㅠㅠㅠㅠㅠ

  • 문제로 제공된 링크를 클릭하면 인증하라고 합니다. 정영훈 2019.10.9 23:34
  • 질문 수정했습니다!! 편숙영 2019.10.10 17:03

2 답변

답변을 하려면 로그인이 필요합니다.

Hashcode는 개발자들을 위한 무료 QnA 사이트입니다. 계정을 생성하셔야만 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 계정을 생성하셔야만 글을 작성하실 수 있습니다.