별 그리기 문제 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을 통한 줄 바꿈
결과

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