[JAVA] for문을 이용한 별찍기

혜원·2023년 7월 22일

제한사항

for문을 이용하여 예시와 같은 *을 출력하라.

삼각형 별찍기_1

class ForTest13 
{
	public static void main(String[] args) 
	{
		for (int i = 1 ; i <= 5 ; i++ )
		{
			for (int j = 1; j <= i ; j++ )
			{
				System.out.print("*");
			}
			System.out.println();
		}
	}
}

바깥쪽 for 루프는 1부터 5까지 5번 반복하며, 안쪽 for 루프는 바깥쪽 루프의 현재 값(i)만큼 별을 출력한다.


삼각형 별찍기_2

class ForTest14 
{
	public static void main(String[] args) 
	{
		for (int i = 5; i >= 1 ; i-- )
		{
			for (int j = 1 ; j <= i ; j++ )
			{
				System.out.print("*");
			}
			System.out.println();
		}
	}
}

바깥쪽 for 루프는 5부터 1까지 1씩 감소하며, 안쪽 for 루프는 바깥쪽 루프의 현재 값(i)만큼 별을 출력한다.


삼각형 별찍기_3

class ForTest15
{
	public static void main(String[] args) 
	{
		for (int i = 1 ; i <= 5 ; i++ )
		{
			for (int j = 1 ; j <= 5-i; j++ )
			{
				System.out.print(" ");		
			}	
			for (int k = 1; k <= i; k++ )
			{
				System.out.print("*");
			}
			System.out.println();
		}
	}
}

바깥쪽 for 루프에서는 1부터 5까지 반복하며, 첫 번째 내부 for 루프에서는 (5 - i)만큼의 공백을 출력하고, 두 번째 내부 for 루프에서는 i만큼의 별을 출력한다.


피라미드 별찍기

class ForTest16
{
	public static void main(String[] args) 
	{
		for (int i = 1 ; i <= 5 ; i++ )
		{
			for (int j = 1 ; j <= 5-i; j++ )
			{
				System.out.print(" ");		
			}	

			for (int j = 1; j <= 2*i-1; j++ )
			{
				System.out.print("*");
			}
			System.out.println();
		}
	}
}

바깥쪽 for 루프에서는 1부터 5까지 반복하며, 첫 번째 내부 for 루프에서는 (5 - i)만큼의 공백을 출력하고, 두 번째 내부 for 루프에서는 (2 * i - 1)만큼의 별을 출력한다.


X 별찍기

class ForTest17 
{
	public static void main(String[] args) 
	{
		for (int i = 1 ; i <= 5 ; i++ )
		{
			for (int j = 1 ; j < i ; j++ )
			{
				System.out.print(" ");		//왼쪽 공백 출력
			}
			for (int j = 1; j <= 4; j++ )
			{
				System.out.print("*");		//왼쪽 별 출력
			}
			for (int j = 1 ; j <= 10-i*2; j++)
			{
				System.out.print(" ");		//가운데 공백 출력
			}
			for (int j = 1; j <= 4; j++ )
			{
				System.out.print("*");		//오른쪽 별 출력
			}
			System.out.println();
		}

		for (int i = 1 ; i <= 5 ; i++ )
		{
			for (int j = 1; j <= 5-i ; j++ )
			{
				System.out.print(" ");		//왼쪽 공백 출력
			}
			for (int j = 1; j <= 4; j++ )
			{
				System.out.print("*");		//왼쪽 별 출력
			}
			for (int j = 1 ; j < i*2-1 ; j++)
			{
				System.out.print(" ");		//가운데 공백 출력
			}
			for (int j = 1; j <= 4; j++)
			{
				System.out.print("*");		//오른쪽 별 출력
			}
			System.out.println();
		}
	}
}

풀이 과정

for (int i = 1; i <= 5; i++) {

변수 i를 1로 초기화하고, i가 5보다 작거나 같을 때까지 1씩 증가하는 첫 번째 for 루프를 시작한다.

for (int j = 1; j < i; j++) {
               System.out.print(" ");
    }

변수 j를 1로 초기화하고, j가 i보다 작을 때까지 1씩 증가하며 i만큼의 왼쪽 공백을 출력한다. 즉 첫 번째 줄에서는 0개의 공백을 출력하고, 두 번째 줄에서는 1개의 공백을 출력하는 것이다.

for (int j = 1; j <= 4; j++) {
                System.out.print("*");
}

변수 j를 1로 초기화하고, j가 4보다 작거나 같을 때까지 1씩 증가하며 4개의 별을 출력한다.

for (int j = 1; j <= 10 - i * 2; j++) {
                System.out.print(" ");
}

변수 j를 1로 초기화하고, j가 (10 - i * 2)보다 작거나 같을 때까지 1씩 증가하며 (10 - i x 2)만큼의 가운데 공백을 출력한다. 즉, 첫 번째 줄에서는 8개의 공백을 출력하고, 두 번째 줄에서는 6개의 공백을 출력하는 식이다.

for (int j = 1; j <= 4; j++) {
                System.out.print("*");
}

변수 j를 1로 초기화하고, j가 4보다 작거나 같을 때까지 1씩 증가하며 4개의 별을 출력한다.

System.out.println();

바깥 for 루프의 첫 번째 반복이 종료되면 한 줄을 띄어 다음 줄로 이동한다.

        for (int i = 1; i <= 5; i++) {

변수 i를 1로 초기화하고, i가 5보다 작거나 같을 때까지 1씩 증가하는 두 번째 for 루프를 시작한다.

for (int j = 1; j <= 5 - i; j++) {
                System.out.print(" ");
}

변수 j를 1로 초기화하고, j가 (5 - i)보다 작거나 같을 때까지 1씩 증가하며 (5 - i)만큼의 왼쪽 공백을 출력한다. 즉, 첫 번째 줄에서는 4개의 공백을 출력하고, 두 번째 줄에서는 3개의 공백을 출력하는 것이다.

for (int j = 1; j <= 4; j++) {
                System.out.print("*");
}

변수 j를 1로 초기화하고, j가 4보다 작거나 같을 때까지 1씩 증가하며 4개의 별을 출력한다.

for (int j = 1; j < i * 2-1; j++) {
            System.out.print(" ");
}

변수 j를 1로 초기화하고, j가 (i x 2 -1 )보다 작을 때까지 1씩 증가하며 (i x 2 - 1)만큼의 가운데 공백을 출력한다.

for (int j = 1; j <= 4; j++) {
                System.out.print("*");
}

변수 j를 1로 초기화하고, j가 4보다 작거나 같을 때까지 1씩 증가하며 4개의 별을 출력한다.

System.out.println();

바깥 두번 째 for 루프의 첫 번째 반복이 종료되면 한 줄을 띄어 다음 줄로 이동한다.

3개의 댓글

comment-user-thumbnail
2023년 7월 22일

공감하며 읽었습니다. 좋은 글 감사드립니다.

답글 달기
comment-user-thumbnail
2023년 7월 27일

좋은 포스팅 감사합니다! 하트 누르고 가요~🥰

답글 달기
comment-user-thumbnail
2023년 7월 28일

ㅋㅋㅋ잘보고갑니다!

답글 달기