코드 그라데이션

JAVA 별찍기 (5) 마름모(다이아몬드) 모양 본문

Java/간단한 Quiz

JAVA 별찍기 (5) 마름모(다이아몬드) 모양

완벽한 장면 2023. 3. 23. 01:50

이건 강사 선생님 풀이 기반으로 코드 해석(이해에 초점)

만들어야 하는 모양

 

풀이 코드

public class Star05_Ex {

  public static void main(String[] args) {
    for(int i = 0;i<3;i++) {  // 0 1 2 3 4
      for(int j = 2; j>i; j--) { // 4 3 2 1 // 4 3 2 // 4 3 // 4 // 안찍힘
        System.out.print(" ");
      }
      for(int j = 0;j<=i*2;j++) { // 0 // 0 1 2 // 0 1 2 3 4 // 0 1 2 3 4 5 6 // 0 1 2 3 4 5 6 7 8
        System.out.print("*");
      }
      System.out.println();
    }
    for(int i = 0;i<2;i++) {
      for(int j =0;j<=i;j++) {
        System.out.print(" ");
      }
      for(int j = 3; j>i*2;j--) {
        System.out.print("*");
      }
      System.out.println();
    }
  }
}

 

해석 브레인스토밍

- 피라미드(삼각형) 두 개가 이어붙여져 있는 걸로 해석하고 풀이 전략을 짜면 된다.

- 위 삼각형은 요거,

- 아래 삼각형은 요거.

- 위 삼각형은 3행이니까 조건식이 i <3 이 된다.(0, 1, 2)

- 첫 행의 공백의 개수는 2칸, 그러니까 초기식이  int i = 2

- 별의 개수는 1 => 3 => 5개... 두 배씩 증가. 그래서 j<=i*2

- 반대로 아래 삼각형은 행 수가 2개 그래서 i<2 로 시작.

- 공백은 없다가, 2개가 되니까 j는 j++

- 별의 개수는 3 => 1개 (2배가 줄어들지)

 

- 그래서 위 삼각형의 중첩 for문과 아래 역삼각형의 중첩 for문을 붙여주면 된다.

728x90
Comments