일단 시작해보는 블로그

[알고리즘_개념] 2차원 배열로 다이아몬드 배열 만들기 본문

CS/알고리즘 개념

[알고리즘_개념] 2차원 배열로 다이아몬드 배열 만들기

Selina Park 2019. 9. 17. 11:34

점화식을 구해서 적용했다.

 

생각 흐름

5 X 5 행렬이 있다고 보면, 데이터가 존재하는 인덱스대로 다음과 같이 처리할 수 있다.

-> 점화식을 만들 때, 대칭인 것(예를 들어, 1 3 5 3 1)을 for문으로 처리하는 방식은 대칭의 중심이 되는 것을 0으로 만들고 실제로 for문안에서 출력할 때 절댓값(java에서는 Math.abs(...))로 사용하면 된다.

 

 

코드

package ArrayAlgorithm;

import java.util.Scanner;

public class Array_Diamond {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);

        int n = sc.nextInt();
        // 5x5배열
        int[][] A = new int[n+1][n+1]; // 인덱스 1-5 사용
        int C = 1;

        // 전부 공백으로 초기화

        int start = n/2;

        for(int i=-start; i<=start; i++){
            for(int j=Math.abs(i)+1; j< n+1-Math.abs(i); j++){
                A[i+start+1][j] = C;
                C++;
            }
        }

        for(int i=1; i<=n; i++){
            for(int j=1; j<=n; j++){
                System.out.print(A[i][j] + " ");
            }
            System.out.println();
        }

    }

}

결과

Comments