코드 그라데이션

JAVA 별찍기 (7) 직각삼각형 모양 (4) 본문

Java/간단한 Quiz

JAVA 별찍기 (7) 직각삼각형 모양 (4)

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

출력해야 하는 모양

 

브레인스토밍

- 공백도 문자일 수 있다는 idea!

- 공백은 (" ") 이 모양으로 찍어주면 된다.

- 공백 0 별 다섯 / 공백 하나 별 넷 / ... 이렇게 지금 반복 되고 있어.

- 그러면, 공백을 찍는 for문과 / 별을 찍는 for문을 각각 만들어서 출력해주면 된다.

** 지금 변하는 값은? 공백의 수와 별의 수.

 

각각을 반복문으로 만들어 보면(행별)

    for (int j = 0; j<0; j++) {
    System.out.print(" "); // 공백 0개
    }
    for (int i = 0; i<5; i++) {
    System.out.print("*"); // 별 5개
	}
    System.out.println("");


    for (int j = 0; j<1; j++) {
      System.out.print(" "); // 공백 1개
    }
    for (int i = 0; i<4; i++) {
      System.out.print("*"); // 별 4개
    }
    System.out.println("");


    for(int j = 0; j<2; j++ ) {
      System.out.print(" "); // 공백 2개
    }
    for(int i = 0; i<3; i++) { // 별 3개
      System.out.print("*");
    }
    System.out.println("");


    for (int j = 0; j<3; j++) {
      System.out.print(" "); // 공백 3개
    }
    for(int i = 0; i<2; i++) { // 별 2개
      System.out.print("*");
    }
    System.out.println("");

    for (int j = 0; j<4; j++) {
      System.out.print(" "); // 공백 4개
    }
    for(int i = 0; i<1; i++) { // 별 2개
      System.out.print("*");
    }
    System.out.println("");

 

이를 종합하고, 조건식에 들어갈 수치(식)를 일단 각각 x와 k로 치환한 식을 먼저 구조화해보면,

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

 

이거다!

 

먼저 x를 k에 관한 식으로 만든다.

  k 0 1 2 3 4
  i 5 4 3 2 1

  k를 가지고 x로 만든다.
  k 0 1 2 3 4
  x 0 1 2 3 4

  따라서 x = k 성립

 

그리고 y를 k에 관한 식으로 만들면?

k를 가지고 y로 만든다.(단, 변수는 오로지 k, 나머진 상수)
  k 0, y =  5-0
  k 1  y 5-1
  k 2  y 5-2
  k 3  y 5-3
  k 4  y 5-4

추출한 식은?

5-k

 

따라서, 종합한 풀이는

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

 

전체 코드

public class Star07 {

  public static void main(String[] args) {

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

}
728x90
Comments