코드 그라데이션

JAVA 별찍기 (6) 직각삼각형 모양 (3) 본문

Java/간단한 Quiz

JAVA 별찍기 (6) 직각삼각형 모양 (3)

완벽한 장면 2023. 3. 23. 02:04

만들어야 하는 모양

 

브레인스토밍

- 별 개수는 점차 줄어들고, 공백의 수는 늘어난 다는 점을 착안하면 된다.

- 그런데 이것도 좌측 정렬 중심이므로 별이 찍히는 개수만 조절해주면 된다.

- 굳이 공백은 고려 대상은 아니다.

 

-  별은 1행에서 5개, 2행에서 4개, 3행에서 3개, 4행에서 2개, 5행에서 1개

=> 규칙적으로 행에서 하나씩 감하는 모습을 보이고 있다.

 

행별 정리하면

	for(int i = 0; i < 5; i++) {
      System.out.print("*");
    }
    System.out.println(); // 1행

    for(int i = 0; i<4; i++) {
      System.out.print("*");
    }
    System.out.println(); // 2행

    for(int i = 0; i<3; i++) {
      System.out.println("*");
    }
    System.out.println(); // 3행

    for(int i = 0; i<2; i++) {
      System.out.println("*");
    }
    System.out.println(); // 4행

    for(int i = 0; i<1; i++) {
      System.out.println("*");
    }
    System.out.println(); // 5행

이렇게 나온다.

 

이를 중첩 for문 화 시켜서,

임시로 i 조건식의 내용을 k라고 둬버리면

for(int j = 0; j<5; j++) {
  for (int i = 0; i < k; i++) {
    System.out.print("*");
  }
  System.out.println();
}

 

k를 j에 관한 식으로 바꿔주면 된다.

j 0 1 2 3 4
k 5 4 3 2 1
k를 j에 관한 식. j 0 -> 0+5   5-0
               j 1 -> 1+3   5-1
               j 2          5-2
               j 3          5-3
               j 4          5-4

즉, 발견한 규칙성 있는 식은,

k= 5-j 

 

따라서 이 치환한 값을 대입한

풀이 코드

    for(int j = 0; j<5; j++) {
      for (int i = 0; i < 5-j; i++) {
        System.out.print("*");
      }
      System.out.println();
    }

 

전체 코드

package megait.backend_lecture._230320;

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

    for(int j = 0; j<5; j++) {
      for (int i = 0; i < 5-j; i++) {
        System.out.print("*");
      }
      System.out.println();
    }

  }

}
728x90
Comments