728x90
별찍기
1번 문제
*****
****
***
**
*
[디버깅표]
*****
****
***
**
*
a = 별을 출력하는 반복문 , i = 빈 공간을 출력하는 반복문
a와 i 사이의 규칙 찾기
a = 5, i = 0
a = 4, i = 1
a = 3, i = 2
a = 2, i = 3
a = 1, i = 4
a + i = 5
라는 규칙성을 찾게 되었으므로, 조건식은 i가 5 - a보다 작을 때
까지 반복문을 써야한다는 사실을 알게 되었으므로, i < 5 - a
조건식이 들어가야 한다. 따라서 코드는 아래와 같다.
for (int a = 0; a < 5; a++) { // 별이 찍힐 개수
for (int i = 0; i < 5-a; i++) { // 빈 공간이 찍힐 개수
System.out.print("*");
}
System.out.println();
}
System.out.println();
[ 출력 결과 ]
*****
****
***
**
*
가 출력 되게 된다.
문제 2번
*
***
*****
[디버깅표]
a a<3 i ???
--------------------
0 T 0 T 3줄만 출력하므로 조건식은 a < 3,
1 T 빈 공간이 첫 줄 2 , 둘째줄 1개, 셋째줄 0개
2 F ㄴ> 조건식 : i < 2 - a
1 T 0 T
1 F
2 T 0 F
a a<3 j ???
--------------------
0 T 0 T 위와 같이 3줄만 출력하므로 조건식 a < 3,
1 F 별 찍히는 것이 첫 줄 1개, 둘째줄 3개, 셋째줄 5개
1 T 0 T ㄴ> 조건식 : j < 2*a + 1
1 T
2 T
3 F
2 T 0 T
1 T
2 T
3 T
4 T
5 F
a의 조건식은 3줄까지이므로 a < 3
, i의 조건식에서 규칙을 찾아보면 빈공간이 첫 줄에는 2개, 둘째줄 1개, 셋째줄 0개이므로 -1씩 되는 것
을 알 수 있다. 따라서 i의 조건식은 증가하는 2-a를 해주게 되면, 2개, 1개, 0개의 빈공간이 찍히게 되므로 i < 2 -a
가 조건식으로 되고, j를 보게되면 첫 줄에 별이 1개, 둘째줄에 3개, 셋째줄에 5개가 찍히므로 홀수로 증가
한다는 규칙을 알 수 있게 되었다. 따라서 j의 조건식은 2 * a + 1
로 하게 되면 1개, 3개, 5개를 출력할 수 있게 된다.
따라서 코드를 짜보면 아래와 같다.
for (int a = 0; a < 3; a++) { // a는 줄의 개수
for (int i = 0; i < 2 - a; i++) { // i는 빈 공간이 찍히는 개수
System.out.print(" ");
}
for (int j = 0; j < 2*a + 1; j++) { // j는 별이 찍히는 개수
System.out.print("*");
}
System.out.println();
}
[ 출력결과 ]
*
***
*****
728x90
'JAVA > JAVA 예제' 카테고리의 다른 글
[JAVA] 반복문 예제 (자판기 만들기) (0) | 2023.05.17 |
---|---|
[JAVA] 조건문 연습문제 (0) | 2023.05.16 |