Algorithm/java 구현

algorithm(java) :) 달팽이 알고리즘 배열로 풀어보기 (2차원 배열풀이)

euncheol kim 2022. 3. 25. 16:12

 

goal

Java로 구현한 달팽이 알고리즘을 이해한다.

 

1 ] 달팽이 알고리즘

image

1. 문제설명

사용자가 입력값 n을 입력했을 때, n * n의 배열을 위와 같은 규칙으로 출력하는 문제

 

 

2. 알고리즘 순서도 및 코드풀이

<첫 번째 풀이>

  1. 알고리즘 순서도

image

  1. 코드풀이
package algorithm;

import java.util.Scanner;

public class TwoArraySpiral {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.printf("숫자를 입력하세요 : ");
        int size = sc.nextInt();

        int[][] arr = new int[size+1][size+1]; // 2차원배열
        int sw = 1; // 스위치변수
        int i = 1; int j = 0; // 배열의 위치
        int count = 0; // 증감변수

        while (true) {
            for (int p = 1; p <= size; p++) {
                count += 1;
                j += sw;
                arr[i][j] = count;
            }
            size = size - 1;

            if (size > 0) {
                for (int p = 1; p <= size; p++) {
                    count += 1;
                    i += sw;
                    arr[i][j] = count;
                }
                sw = sw * -1;
            } else {
                break; // 기저조건
            }
        }

        for(int n = 1; n < arr.length; n++) {
            for(int m = 1; m < arr[n].length; m++) {
                System.out.print(arr[n][m] + "\t");
            }
            System.out.println();
        }
    }
}