[Algorithm] Programmers_삼각 달팽이 in Java

하이초·2024년 3월 16일
0

Algorithm

목록 보기
90/94
post-thumbnail

💡 Programmers Level.2 귤 고르기:

시계 반대 방향으로 배열 채우기

🌱 코드 in Java

알고리즘: BruteForce?

import java.util.*;

class Solution {
    public int[] solution(int n) {
        int[][] tmp = new int[n][]; // 2차원 배열 생성
        for (int i = 0; i < n; i++)
            tmp[i] = new int[i + 1]; // 길이만큼 생성
        int cnt = 1, last = (n * (1 + n)) / 2, i = 0, j = 0; 
        while (cnt <= last) { // 배열을 다 채울때까지
            while (i < n && tmp[i][j] == 0) // 왼쪽 아래로 내려가기
                tmp[i++][j] = cnt++;
            
            i--;
            j++;
            
            while (j < n && tmp[i][j] == 0) // 오른쪽으로 가기
                tmp[i][j++] = cnt++;
            
            i--;
            j -= 2;
            
            while (i > 0 && tmp[i][j] == 0) // 왼쪽 위로 올라가기
                tmp[i--][j--] = cnt++;
            
            i += 2;
            j++;
        }
        return Arrays.stream(tmp).flatMapToInt(Arrays::stream).toArray();
    } // 2차원 배열 1차원으로 평탄화
}

이번 문제는 뭔가 DFS로 풀 수 있을 것 같긴 한데 어려울 것 같아서
패턴을 찾아서 그냥 그대로 2차원 배열을 만들고
그걸 다시 1차원으로 평탄화 하는 식으로 풀었다


🧠 기억하자

1) stream.flatMapToInt

  • 배열 평탄화 메소드
profile
개발국대가 되는 그 날까지. 지금은 개발 응애.

0개의 댓글