728x90
코드 힌트:
- 배열의 크기와 최대 값 계산:
- 주어진 n에 대해 삼각형 배열을 채울 수 있는 최대 숫자를 계산한 후, 이 값을 기반으로 배열을 설정합니다.
- 순차적으로 값 채우기:
- 삼각형 형태로 숫자를 순차적으로 채우는 방식은 방향을 반복하며 이루어집니다.
- 첫 번째 방향은 아래로, 두 번째는 오른쪽으로, 세 번째는 대각선 위로 이동합니다.
- 배열에 값을 채우고 결과 반환:
- 2차원 배열에서 값을 채운 후, 이를 1차원 배열로 변환하여 반환합니다.
정답은 더보기 클릭
더보기
class Solution {
public int[] solution(int n) {
int max = n * (n + 1) / 2; // 삼각형에 들어갈 최대 숫자 계산
int[][] map = new int[n][n]; // 삼각형을 채울 2차원 배열 생성
int[] result = new int[max]; // 결과를 저장할 1차원 배열
int el = 1; // 채워질 숫자
int x = -1, y = 0; // 시작 좌표, x는 -1부터 시작해 첫 행에서 0으로 이동
// 숫자를 순차적으로 삼각형 형태로 채워나감
for (int i = 0; i < n; i++) {
for (int j = i; j < n; j++) {
if (i % 3 == 0) {
x++; // 아래로 이동
} else if (i % 3 == 1) {
y++; // 오른쪽으로 이동
} else {
x--; // 대각선 위로 이동
y--;
}
map[x][y] = el++; // 해당 좌표에 숫자 저장
}
}
// 2차원 배열에서 1차원 배열로 변환
int idx = 0;
for (int i = 0; i < n; i++) {
for (int j = 0; j <= i; j++) {
result[idx++] = map[i][j]; // 각 요소를 result 배열에 저장
}
}
return result; // 결과 반환
}
}
728x90
'프로그래머스(Java) > Level 2' 카테고리의 다른 글
[프로그래머스] 연속된 부분 수열의 합 (0) | 2024.09.25 |
---|---|
[프로그래머스] 큰 수 만들기 (0) | 2024.09.24 |
[프로그래머스] 쿼드압축 후 개수 세기 (0) | 2024.09.21 |
[프로그래머스] 두 큐 합 같게 만들기 (0) | 2024.09.18 |
[프로그래머스] 소수 찾기 (0) | 2024.09.07 |