728x90
https://school.programmers.co.kr/learn/courses/30/lessons/68645
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
🔸 접근 방법
- 2차원 배열을 만들어서 삼각형처럼 사용할 수 있도록 구성합니다. (전체 크기는 n x n)
- 현재 위치를 나타내는 좌표 x, y를 두고, 방향에 따라 이동하며 값을 채웁니다.
- 방향은 아래 → 오른쪽 → 왼쪽 위 대각선으로 반복됩니다.
- 배열이 채워진 후에는, 삼각형 형태로 채운 값들을 1차원 배열로 추출해서 반환합니다.
import java.util.*;
class Solution {
public int[] solution(int n) {
int[][] triangle = new int[n][n]; // 삼각형 모양의 2차원 배열
int x = -1, y = 0; // 시작 위치
int num = 1; // 채워넣을 값
// 방향을 바꾸며 반복
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 if (i % 3 == 2) { // 왼쪽 위 대각선
x--;
y--;
}
triangle[x][y] = num++;
}
}
// 결과를 1차원 배열로 평탄화
int[] answer = new int[num - 1];
int idx = 0;
for (int i = 0; i < n; i++) {
for (int j = 0; j <= i; j++) {
answer[idx++] = triangle[i][j];
}
}
return answer;
}
}
728x90
'CS지식' 카테고리의 다른 글
[알고리즘] 마법의 엘리베이터 (0) | 2025.04.15 |
---|---|
[알고리즘] MST 최소 신장 (스패닝) 트리 (0) | 2025.02.22 |
[프로그래머스] LIS (0) | 2025.02.07 |
[알고리즘] 프로그래머스 '의상' (0) | 2025.01.10 |
[알고리즘] 슬라이딩 윈도우 (0) | 2025.01.10 |