상세 컨텐츠

본문 제목

[JAVA] 자바 예제 - 다차원 배열로 피라미드 모양 출력하기

공-부/Homework

by 사랑짱 2021. 6. 10. 17:34

본문

<문제>

다차원 배열을 값의 목록으로 생성하고, 아래와 같이 출력하는 프로그램을 작성하시오.

(Tip. 피라미드 모양의 문자열 템플릿을 먼저 만들어보면 어떨까?)

 

 

문제 해결 포인트

 

피라미드의 각 층을 하나의 배열 형태 요소로 본다면 다차원 배열을 생성해야 한다.

총 6개의 1차원 배열이 있으며 각 배열의 길이는 모두 다르다. 

이러한 배열을 생성하는 식을 작성하면 다음과 같다.

--->  int[ ][ ] arr = new int [6][ ];

 

하지만 이 문제에서는 배열의 요소 값과 순서를 알고 있으므로

값 목록으로 배열의 요소 값을 입력해주도록 한다.

 

이제 피라미드 모양의 템플릿을 출력하기 위한 메소드를 만들어야 한다.

이때, 메소드를 통해 입력받은 배열의 요소 값들은 피라미드에 대입되어야 한다.

그러기 위해서 피라미드 형태의 문자열 템플릿을 구현한 뒤,

각 요소값들로 교환하는 방법을 사용하려고 한다.

 

위 내용을 바탕으로 문제를 풀어보자!

 

 

문제 해결 과정

 

Step1. 피라미드 모양의 템플릿을 출력하기 위한 메소드의 시그니처를 정한다.

   1-1. 메소드 이름 : pyramidPrint 

   1-2. 리턴타입 : 피라미드 모양의 템플릿이 문자열로 반환되므로  String

   1-3. 매개변수 : 2차원 배열

 

Step2. 피라미드 모양의 템플릿을 반환하는 문자열 변수를 정의한다.

   2-1. 문자열의 결합을 위해 StringBuffer를 생성한다.

   2-2. StringBuffer에서 문자열을 결합해주는 append메소드를 호출한다.

   2-3. 피라미드 형태가 출력되도록 한줄씩 입력하여 결합한다.

   2-4. 이때 String.format을 통해 피라미드의 형태를 만들어 치환할 문자열 t를 입력한다.

   2-5. toString 메소드를 통해 결합된 객체를 생성하여 변수에 대입한다.

 

Step3. for문을 통해 2번에서 정의한 문자열 변수 pyramid에서 replaceFirst 메소드를

    사용하여 배열의 요소값으로 치환한다.

   3-1. valueOf( )메소드를 통해 배열의 요소값을 String타입으로 변환한다.

         (replaceFirst 메소드는 문자열을 매개변수로 받기 때문에)

   3-2. replaceFirst 메소드를 통해 문자열 변수 t를 매개변수로 받은 배열의 요소값으로 치환한다.

 

Step4.  pyramidPrint 메소드는 배열의 요소값으로 대체된 문자열 변수 pyramid를 리턴한다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
public class Pyramid {
 
    
    public String pyramidPrint(int[][] arr) {
        
        String t = "temp";    
        
        String pyramid = new StringBuffer()            // 피라미드패턴 출력변수
                .append(String.format("%10s", t) + '\n')
                .append(String.format("%9s %s", t, t) + '\n')
                .append(String.format("%8s %s %s", t, t, t) + '\n')
                .append(String.format("%7s %s %s %s", t, t, t, t) + '\n')
                .append(String.format("%6s %s %s %s" , t, t, t, t) + '\n')
                .append(String.format("%5s %s %s %s %s", t, t, t, t, t) + '\n')
                .toString();
 
        for(int[] i : arr) {
            
            for(int j : i) {
                String s = String.valueOf(j);            //문자열타입으로 변환
                pyramid = pyramid.replaceFirst(t, s);    //배열요소 값으로 치환            
            } //inner for
            
        } //outer for
        
        return pyramid;
        
    }    //pyramidPrint
 
}    //end class
cs

 

 

Step5. 실행클래스에서 arr 배열을 선언하고 값 목록으로 요소 값을 입력한다.

 

Step6. 배열의 요소값을 피라미드 형태로 출력해주는 pyramidPrint메소드를 호출한다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class PyramidTest {
 
        
    public static void main(String[] args) {
        int[][] arr = {{1},
                       {23},
                       {456},
                       {78910},
                       {11121314},
                       {15161718,19}};     // 값목록으로 배열 요소 값 입력 받기
        
        Pyramid pyramid = new Pyramid();
        System.out.println(pyramid.pyramidPrint(arr));     // pyramidPrint메소드로 
                                                          // 요소들을 피라미드 모양으로 출력하기
        
    }    //main
    
}    //end class
cs

 

 

관련글 더보기