[JAVA] 17. 반대편에서 시작하는 오름차순 별 그리기

편준민's avatar
Feb 10, 2025
[JAVA] 17. 반대편에서 시작하는 오름차순 별 그리기

문제

* ** *** **** *****

1. 하드 코딩

package ex03; public class Prc03 { public static void main(String[] args) { // 1. 끝에서 부터 * 1개 System.out.print(" "); System.out.print(" "); System.out.print(" "); System.out.print(" "); System.out.print("*"); System.out.println(); // 2. 끝에서 부터 * 2개 System.out.print(" "); System.out.print(" "); System.out.print(" "); System.out.print("*"); System.out.print("*"); System.out.println(); // 3. 끝에서 부터 * 3개 System.out.print(" "); System.out.print(" "); System.out.print("*"); System.out.print("*"); System.out.print("*"); System.out.println(); } }
  • 공백은 1개씩 줄어들고, *의 갯수가 1개씩 늘어남 (패턴)

2. 반복문 사용해서 바꾸기

package ex03; public class Prc03 { public static void main(String[] args) { // 1. 끝에서 부터 * 1개 for (int i = 0; i < 4; i++) { System.out.print(" "); } for (int j = 0; j < 1; j++) { System.out.print("*"); } System.out.println(); // 2. 끝에서 부터 * 2개 for (int i = 0; i < 3; i++) { System.out.print(" "); } for (int j = 0; j < 2; j++) { System.out.print("*"); } System.out.println(); // 3. 끝에서 부터 * 3개 for (int i = 0; i < 2; i++) { System.out.print(" "); } for (int j = 0; j < 3; j++) { System.out.print("*"); } System.out.println(); // 4. 끝에서 부터 * 4개 for (int i = 0; i < 1; i++) { System.out.print(" "); } for (int j = 0; j < 4; j++) { System.out.print("*"); } System.out.println(); // 5. 끝에서 부터 * 5개 for (int i = 0; i < 0; i++) { System.out.print(" "); } for (int j = 0; j < 5; j++) { System.out.print("*"); } System.out.println(); } }
  • System.out.print(” “)가 반복되어, 숫자가 1씩 감소하는 반복문 사용하고 변수 찾기
  • System.out.print(”*”)가 반복되어, 숫자가 1씩 늘어나는 반복문 사용하고 변수 찾기

3. 변수 선언

package ex03; public class Prc03 { public static void main(String[] args) { int h = 4; int s = 1; // 1. 끝에서 부터 * 1개 for (int i = 0; i < h; i++) { System.out.print(" "); } for (int j = 0; j < s; j++) { System.out.print("*"); } System.out.println(); // 2. 끝에서 부터 * 2개 h = h - 1; for (int i = 0; i < h; i++) { System.out.print(" "); } s++; for (int j = 0; j < s; j++) { System.out.print("*"); } System.out.println(); // 3. 끝에서 부터 * 3개 // 2. 끝에서 부터 * 2개 h = h - 1; for (int i = 0; i < h; i++) { System.out.print(" "); } s++; for (int j = 0; j < s; j++) { System.out.print("*"); } System.out.println(); // 4. 끝에서 부터 * 4개 // 2. 끝에서 부터 * 2개 h = h - 1; for (int i = 0; i < h; i++) { System.out.print(" "); } s++; for (int j = 0; j < s; j++) { System.out.print("*"); } System.out.println(); // 5. 끝에서 부터 * 5개 h = h - 1; for (int i = 0; i < h; i++) { System.out.print(" "); } s++; for (int j = 0; j < s; j++) { System.out.print("*"); } System.out.println(); } }
  • System.out.print(" ")의 반복문의 변수(for (int i =0; i < 4; i++)를 h로 선언
  • h가 1씩 감소하는 로직 생성 (h = h - 1;)
  • System.out.print("*")의 반복문의 변수(for (int j =0; j < 4; j++)를 s로 선언
  • s가 1씩 증가하는 로직 생성(s++;)
 

4. 모든 코드 통일

package ex03; public class Prc03 { public static void main(String[] args) { int h = 5; int s = 0; // 1. 끝에서 부터 * 1개 h = h - 1; for (int i = 0; i < h; i++) { System.out.print(" "); } s++; for (int j = 0; j < s; j++) { System.out.print("*"); } System.out.println(); // 2. 끝에서 부터 * 2개 h = h - 1; for (int i = 0; i < h; i++) { System.out.print(" "); } s++; for (int j = 0; j < s; j++) { System.out.print("*"); } System.out.println(); // 3. 끝에서 부터 * 3개 h = h - 1; for (int i = 0; i < h; i++) { System.out.print(" "); } s++; for (int j = 0; j < s; j++) { System.out.print("*"); } System.out.println(); // 4. 끝에서 부터 * 4개 h = h - 1; for (int i = 0; i < h; i++) { System.out.print(" "); } s++; for (int j = 0; j < s; j++) { System.out.print("*"); } System.out.println(); // 5. 끝에서 부터 * 5개 h = h - 1; for (int i = 0; i < h; i++) { System.out.print(" "); } s++; for (int j = 0; j < s; j++) { System.out.print("*"); } System.out.println(); } }

1번과 2, 3, 4, 5번의 코드가 다르다 (아래 코드 참고)

int h = 4; int s = 1; // 1. 끝에서 부터 * 1개 // ?? 1번에는 없다. for (int i = 0; i < h; i++) { System.out.print(" "); } // ?? 1번에는 없다. for (int j = 0; j < s; j++) { System.out.print("*"); } System.out.println(); // 2. 끝에서 부터 * 2개 h = h - 1; // 2번 부터 있다. for (int i = 0; i < h; i++) { System.out.print(" "); } s++; // 2번 부터 있다. for (int j = 0; j < s; j++) { System.out.print("*"); } System.out.println();
  • int h = 4; 를 int h = 5; 으로 변경
  • int s = 1; 를 ins s = 0; 으로 변경
 

5. 공통 모듈 생성 후 조건문 사용

package ex03; public class Prc03 { public static void main(String[] args) { int h = 5; int s = 0; // 1. 끝에서 부터 * 1개 for (int k = 0; k < 5; k++) { h = h - 1; for (int i = 0; i < h; i++) { System.out.print(" "); } s++; for (int j = 0; j < s; j++) { System.out.print("*"); } System.out.println(); } } }
Share article

YunSeolAn