7026 : 2D 달팽이 수 생성
•시간제한: 1.000 S
•메모리제한: 256 MB
•제출: 1
•통과: 1
•만든사람: suakii
문제 설명
양의 정수 $N$이 주어졌을 때, $N \times N$ 크기의 2차원 배열의 왼쪽 위($0, 0$)에서 시작하여 $1$부터 $N^2$까지의 숫자를 시계 방향 달팽이 모양으로 채워 나간 결과를 출력하는 프로그램을 작성하십시오.
예를 들어, $N = 3$일 때의 달팽이 배열은 다음과 같습니다.
1 2 3
8 9 4
7 6 5
[제약 조건]
• 배열 크기 $N$: $1 \le N \le 20$ (정수)
예를 들어, $N = 3$일 때의 달팽이 배열은 다음과 같습니다.
1 2 3
8 9 4
7 6 5
[제약 조건]
• 배열 크기 $N$: $1 \le N \le 20$ (정수)
입력 설명
첫째 줄에 배열의 크기 $N$이 주어집니다. ($1 \le N \le 20$)
출력 설명
달팽이 순서대로 채워진 $N \times N$ 크기의 배열을 $N$개의 줄에 걸쳐 한 행씩 공백으로 구분하여 출력합니다.
입력 예시
COPY
복사되었습니다!
복사되었습니다!
3
출력 예시
COPY
복사되었습니다!
복사되었습니다!
1 2 3
8 9 4
7 6 5
도움
시계 방향(우 $\to$ 하 $\to$ 좌 $\to$ 상)의 이동을 위한 방향 벡터(우:
(0, 1), 하: (1, 0), 좌: (0, -1), 상: (-1, 0))를 만들어 배열에 숫자를 채워 나갑니다. 배열의 범위를 벗어나거나 이미 다른 숫자가 채워진 칸을 만나면 다음 방향으로 전환하는 방식으로 구현합니다.