728x90
반응형
SMALL

문제 설명

양의 정수 n이 매개변수로 주어집니다. n × n 배열에 1부터 n2 까지 정수를 인덱스 [0][0]부터 시계방향 나선형으로 배치한 이차원 배열을 return 하는 solution 함수를 작성해 주세요.


제한사항

  • 1 ≤ n ≤ 30

입출력 예

n result

4 [[1, 2, 3, 4], [12, 13, 14, 5], [11, 16, 15, 6], [10, 9, 8, 7]]
5 [[1, 2, 3, 4, 5], [16, 17, 18, 19, 6], [15, 24, 25, 20, 7], [14, 23, 22, 21, 8], [13, 12, 11, 10, 9]]

입출력 예 설명

입출력 예 #1

  • 예제 1번의 n의 값은 4로 4 × 4 배열에 다음과 같이 1부터 16까지 숫자를 채울 수 있습니다.행 \ 열 0 1 2 3
    0 1 2 3 4
    1 12 13 14 5
    2 11 16 15 6
    3 10 9 8 7
    따라서 [[1, 2, 3, 4], [12, 13, 14, 5], [11, 16, 15, 6], [10, 9, 8, 7]]를 return 합니다.

입출력 예 #2

  • 예제 2번의 n의 값은 5로 5 × 5 배열에 다음과 같이 1부터 25까지 숫자를 채울 수 있습니다.행 \ 열 0 1 2 3 4
    0 1 2 3 4 5
    1 16 17 18 19 6
    2 15 24 25 20 7
    3 14 23 22 21 8
    4 13 12 11 10 9
    따라서 [[1, 2, 3, 4, 5], [16, 17, 18, 19, 6], [15, 24, 25, 20, 7], [14, 23, 22, 21, 8], [13, 12, 11, 10, 9]]를 return 합니다.
package Lv0;
/*
양의 정수 n이 매개변수로 주어집니다.
 n × n 배열에 1부터 n2 까지 정수를 인덱스 [0][0]부터 시계방향 나선형으로 배치한 이차원 배열을 return 하는 solution 함수를 작성해 주세요.
 */
public class H181832 {
	public int[][] solution(int n) {
		int[][] answer = new int[n][n];
		int number = 1;
		int x = 0, y = -1;
		int direction = 1;

		while (n > 0) {
			for (int i = 0; i < n; i++) {
				y += direction;
				answer[x][y] = number++;
			}
			n--;

			for (int i = 0; i < n; i++) {
				x += direction;
				answer[x][y] = number++;
			}
			direction *= -1;
		}
		return answer;
	}
}
728x90
반응형
LIST

'알고리즘 > 프로그래머스 JAVA LV.0' 카테고리의 다른 글

코드 처리하기  (0) 2023.05.07
겹치는 선분의 길이  (0) 2023.05.07
배열 조각하기  (0) 2023.05.07
옹알이 (1)  (0) 2023.05.07
전국 대회 선발 고사  (0) 2023.05.07

+ Recent posts