Notice
Recent Posts
Recent Comments
Link
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Archives
Today
Total
관리 메뉴

Everything has an expiration date

061 - Java 과제 5-2 : 반복문 for문을 이용해 별 문자를 여러 모양으로 출력하는 프로그램 (피라미드 형) 본문

[Java]/과제

061 - Java 과제 5-2 : 반복문 for문을 이용해 별 문자를 여러 모양으로 출력하는 프로그램 (피라미드 형)

Jelly-fish 2023. 9. 1. 13:24
package 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
		
	}
}


// 실행 결과

/*

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

 */