이렇게 숫자 채우기가 완료되었습니다. 이후 1차원 배열을 구성하고 반환하는 것은 동일합니다.

    개량된 전체 코드는 다음과 같습니다.

     

    전체 코드

    3장/삼각_달팽이_개량.java

    public class Solution {
        private static final int[] dx = {0, 1, -1};
        private static final int[] dy = {1, 0, -1};
    
        public int[] solution(int n) {
            int[][] triangle = new int[n][n];
            int v = 1;
            int x = 0;
            int y = 0;
            int d = 0;
    
            while (true) {
                triangle[y][x] = v++;
                int nx = x + dx[d];
                int ny = y + dy[d];
                if (nx == n || ny == n || nx == -1 || ny == -1 || triangle[ny][nx] != 0) {
                    d = (d + 1) % 3;
                    nx = x + dx[d];
                    ny = y + dy[d];
                    if (nx == n || ny == n || nx == -1 || ny == -1 || triangle[ny][nx] 
                    != 0) break;
                }
                x = nx;
                y = ny;
            }
    
            int[] result = new int[v - 1];
            int index = 0;
            for (int i = 0; i < n; i++) {
                for (int j = 0; j <= i; j++) {
                    result[index++] = triangle[i][j];
                }
            }
    
            return result;
        }
    }

    코드가 훨씬 깔끔해지고 중복되는 코드가 줄어들었음을 알 수 있습니다.

    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.