달팽이 알고리즘

0

코딩테스트

목록 보기
33/37
post-thumbnail
import java.util.Scanner;

public class 달팽 {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        int n = sc.nextInt();
        int[][] arr = new int[n][n];

        // 값을 담아 줄 준비
        int k =1; // 배열 안에 담아 줄 수
        int round = 1; // 진행 회차
        int x=0,y = 0;  // 시작 좌표

        if (n % 2 == 1) {
            arr[n/2][n/2] = n*n;
        }

        while (k< n*n){
            // 1. 오른쪽 진행
            // n이 5라 치면 4니까 인덱스 0~3까지 총 4번 진행
            for (int j = y; j<n-round; j++){
                arr[x][j] = k;
                k++;
                y++;
            }

            // 2. 아래로 진행
            for (int i=x; i<n-round; i++){
                arr[i][y] = k;
                k++;
                x++;
            }

            // 3. 왼쪽 진행, 4~1 총 4번
            for (int j = y; j > round - 1; j--) {
                arr[x][j] = k;
                k++;
                y--;
            }

            // 4. 위로 진행
            for (int i = x; i > round - 1; i--) {
                arr[i][y] = k;
                k++;
                x --;
            }
            x = round;
            y=round;
            round += 1;
        }
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                System.out.print(arr[i][j]+"  ");
            }
            System.out.println();
        }
    }
}

코테 보고 당시엔 못풀었는데 생각하니 되더라
근데 더 예쁘게 짜고싶은데 matrix에 약해서..
좀 더 연습을 해서 리팩토링 해야겠다...

profile
두둥탁 뉴비등장

0개의 댓글