본문 바로가기

CS지식

[알고리즘] 프로그래머스 삼각 달팽이

728x90

https://school.programmers.co.kr/learn/courses/30/lessons/68645

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

🔸 접근 방법

  1. 2차원 배열을 만들어서 삼각형처럼 사용할 수 있도록 구성합니다. (전체 크기는 n x n)
  2. 현재 위치를 나타내는 좌표 x, y를 두고, 방향에 따라 이동하며 값을 채웁니다.
  3. 방향은 아래 → 오른쪽 → 왼쪽 위 대각선으로 반복됩니다.
  4. 배열이 채워진 후에는, 삼각형 형태로 채운 값들을 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