[JAVA] 17. for문을 이용한 별 그리기 2

문정준's avatar
Feb 05, 2025
[JAVA] 17. for문을 이용한 별 그리기 2

별 그리기 문제 2

  • 별을 첫 줄에는 7개, 둘째 줄에는 5개, … , 넷째 줄에는 1개를 그리시오.
 

문제 분석

  • 별의 개수가 7, 5, 3, 1의 순으로 감소
    • 7 = 7 - 2 * 0
    • 5 = 7 - 2 * 1
    • 3 = 7 - 2 * 2
    • 1 = 7 - 2 * 3
      • 총 별의 개수, 곱해지는 수는 동일
      • 끝의 line counter만 변화하므로 이것만 증가하면 됨
      • 별의 개수 = (총 별의 개수 = 7) - (곱해지는 수 = 2) * (line counter - 1 : 0부터 시작)
 

코드 작성

package ex03; // ******* // ***** // *** // * public class Prc02 { public static void main(String[] args) { // 1. 별 7 (7 - 2*0)개 그리기 int n = 0; for (int i = 7; i > 2 * n; i--) { System.out.print("*"); } System.out.println(); n++; // 2. 별 5 (7 - 2*1)개 그리기 for (int i = 7; i > 2 * n; i--) { System.out.print("*"); } System.out.println(); n++; // 3. 별 3 (7 - 2*2)개 그리기 for (int i = 7; i > 2 * n; i--) { System.out.print("*"); } System.out.println(); n++; // 4. 별 1 (7 - 2*3)개 그리기 for (int i = 7; i > 2 * n; i--) { System.out.print("*"); } System.out.println(); n++; // 5. 한 번에 다 처리 (이중 반복문) n = 0; for (int line = 0; line < 4; line++) { for (int count = 7; count > 2 * n; count--) { System.out.print("*"); } System.out.println(); n++; // 0, 1, 2, 3 순으로 커져야 하므로 반복 후 1 증가 } } }
  • n이라는 변수를 추가하여 줄이 바뀔 때마다 1씩 추가 (line counter)
    • 다만, line counter가 0부터 시작해야 하므로 반복 후 n++ 코드를 삽입
  • 이중 반복문을 사용하여 줄을 여러 번 적는 것을 반복문으로 단축
    • 별을 연속으로 찍은 후 줄을 바꿔야 하므로 별을 찍는 sout 문은 println이 아닌 print
    • 각 줄의 별 입력이 끝난 후 println을 통한 줄 바꿈
 

결과

notion image
 
💡
문제 요점
  1. 각 줄이 변경될 때마다 별의 개수가 줄어듦에 주의
  1. line counter의 개념을 이해하고 추가 변수를 사용할 수 있어야 함
  1. 줄 바꿈 및 별 출력의 sout문 차이에 유의
Share article

sxias