문제풀이 흐름

굳이 문제의 그림을 그대로 담으려고 하지 말고 2차원 배열에서 다루기 쉽게 다음 그림과 같이 저장하면 됩니다.

Untitled

2차원 배열에서 반시계 방향인 아래 → 오른쪽 → 왼쪽 위로 진행하는 것이 됩니다.

Untitled

  1. n x n 2차원 배열 선언
  2. 숫자를 채울 현재 위치를 (0,0)으로 설정
  3. 방향에 따라 이동할 수 없을 때까지 반복하면서 숫자 채우기
    1. 아래로 이동하면서 숫자 채우기
    2. 오른쪽으로 이동하면서 숫자 채우기
    3. 왼쪽 위로 이동하면서 숫자 채우기
  4. 채워진 숫자를 차례대로 1차원 배열에 옮겨서 반환

코드 작성(방법 1)

1. n x n 2차원 배열 선언

int [][] triangle = new int[n][n];
int v = 1; // 변수를 채워 넣을 숫자로, 숫자를 triangle에 기록할 때마다 1씩 증가함.

2. 숫자를 채운 현재 위치를 (0,0)으로 설정

int x = 0;
int y = 0;

3. 방향에 따라 이동할 수 없을 때까지 반복하면서 숫자 채우기

while (true) {
	// 아래로 이동
	
	// 오른쪽으로 이동

	// 왼쪽으로 이동
}

3-A 아래로 이동하면서 숫자 채우기

while (true) {
	triangle[y][x] = v++;
	if (y + 1 == n || triangle[y+1][x] != 0) break;
	y += 1;
}
if (x + 1 == n || triangle[y][x+1] != 0) break; // 오른쪽으로 이동 할 수 없으면 탈출
x += 1;