Notice
Recent Posts
Recent Comments
Link
Everything has an expiration date
061 - Java 과제 5-2 : 반복문 for문을 이용해 별 문자를 여러 모양으로 출력하는 프로그램 (피라미드 형) 본문
[Java]/과제
061 - Java 과제 5-2 : 반복문 for문을 이용해 별 문자를 여러 모양으로 출력하는 프로그램 (피라미드 형)
Jelly-fish 2023. 9. 1. 13:24package Test061;
/*==============================================
■■■ 실행 흐름의 컨트롤(제어문) ■■■
- 반복문(for문) 실습 및 관찰
================================================*/
// ○ 다중 for문(반복문의 중첩)을 활용한 별찍기 실습
// ○ 과제
// 다음과 같은 내용이 출력될 수 있도록
// 반복문의 중첩 구문을 작성하여 프로그램을 구현한다.
// 실행 예)
/*
*
***
*****
*******
*********
*/
public class Test061
{
public static void main(String[] args)
{
// 1. 변수 선언**************************************************
int i; // for문에서 사용할 loof 변수
int j;
int k;
// 2. 반복문 for문을 통해 다음과 같은 Logic을 구현한다.****************
/*[Logic]▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤
[실행 과정]
1. 공백을 4번 출력한다. 4. 공백을 3번 출력한다. 7. 공백을 2번 출력한다.
2. "*"을 1번 출력한다. 5. "*"을 3번 출력한다. 8. "*"을 5번 출력한다.
3. 개행한다.\n 6. 개행한다.\n 9. 개행한다.\n
10. 공백을 1번 출력한다. 13. 공백을 0번 출력한다.
11. "*"을 7번 출력한다. 14. "*"을 9번 출력한다.
12. 개행한다.\n 15. 개행한다.\n
| i(공백) | j("*") | k(개행 \n) | (k의 값은 개행 횟수가 아니라, 1번 실행할 때 1씩 증가하는 loof변수값)
| 4 | 1 | 1 |
| 3 | 3 | 2 |
| 2 | 5 | 3 |
| 1 | 7 | 4 |
| 0 | 9 | 5 |
↓ (이 과정을 간단히 정리해 보면...)
〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
[아래를 모두 실행했을 때 1번씩 총 5번 개행한다.] ▶ (k = 1 ~ 5)
① 공백을 (5-k) ~ 0까지 출력한다. ▶ (i = 5-k ~ 0)
② "*"을 1부터 ~ ⓐ[2k - 1] ⓑ[1+(k-1)*2]만큼 출력한다. ▶ (j = 1 ~ ⓐ[2k - 1])
▶ (j = 1 ~ ⓑ[1+((k-1)*2)])
〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
<수식 검증>
| k | ⓑ[2k - 1] | ⓑ[1+((k-1)*2)] |
| 1 | (2 * 1) - 1 = 1 | 1 + ((0) * 2) = 1 |
| 2 | (2 * 2) - 1 = 3 | 1 + ((1) * 2) = 3 |
| 3 | (2 * 3) - 1 = 5 | 1 + ((2) * 2) = 5 |
| : | : | : |
▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤*/
for (k = 1; k <= 5; k++) // [아래를 모두 실행했을 때 1번씩 총 5번 개행한다.] ▶ (k = 1 ~ 5)
{
for (i = 5-k ; i >= 0 ; i--) // ① 공백을 (5-k) ~ 0까지 출력한다. ▶ (i = 5-k ~ 0)
{
System.out.print(" ");
}//end for i
for (j = 1 ; j <= (2*k-1) ; j++) // ② "*"을 1부터 ~ ⓐ[2k - 1] 만큼 출력한다. ▶ (j = 1 ~ ⓐ[2k - 1])
{
System.out.print("*");
}//end for j
System.out.println();
}//end for k
}
}
// 실행 결과
/*
*
***
*****
*******
*********
*/