today_is

[ for ] 별찍기 본문

java

[ for ] 별찍기

ye_rang 2023. 11. 30. 09:21

오늘의 목표 >>

 

이중 for 문에 대해서 알아보자.

1)  공백과 별의 개수 변화를 확인하여 문제를 풀어야한다.

2)  각각의 for문이 어떠한 결과를 출력해야하는지를 먼저 생각해보고 문제를 풀어보자.

 


 

Quiz 01 >  해당 모양을 만들어보세요.

(단, 사이즈는 5로 지정한다. )

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

 

tip >

각 행 마다  공백과 별이 몇개씩 출력되어야하는지를 먼저 파악한다.

별찍기는 기본적으로 어떠한 규칙이 있다. 

따라서 공백과 별의 개수의 변화를 찾는 것이 우선이다.

public class Star {

	public static void main(String[] args) {

//				공백(고정)			   별 (공백에 따라 별의 개수를 변경)
//		# # # # #		0	     			 5
//		  # # # #		1       			 4
//		    # # #		2        			 3
//		      # #		3         			 2 
//		        #		4				 1

		
//	규칙 >>			      += 1			      -= 1
		
		
		int size = 5;		
		int star = size;	
		int space = 0;
		
		for (int i = 0; i < size ; i++) {
//			star = size - i;		//	i 에 따른 별의 개수 
			for (int j = 0; j < space; j++) {		
				System.out.print("  ");
			}
			for (int j = 0; j < star; j++) { //	출력할 개수는 무조건 star까지  
				System.out.print("* ");
			}
			System.out.println();
			
			star -= 1;
			space += 1;
		}
		

		
	}

}

 

 


 

 

Quiz 02 >  이번에는 사용자에게 사이즈에 대한 입력을 받아서, 처리해보자. 

입력값에 따라, 출력되는 별의 크기가 달라져야한다.

 

ex) 5를 입력했을때

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

 

 

tip > 

기본적으로 오른쪽 정렬하려면, 공백과 별의 개수를 알아내야한다
한 줄 단위로 공백과 별이 몇개들어가는지 먼저 파악한 후
한 줄이 끝난다면 줄바꿈을 해주자

 

import java.util.Scanner;

public class Star {
  public static void main(String[] args) {

	Scanner sc = new Scanner(System.in);
		
	int count = sc.nextInt();	//	사용자에게 개수를 전달받는다
    
    for(int i = 1; i <= count; i++) {
		int num = count - i;
		for(int j = 0; j < num; j++) {	//	5 , 4 , 3 , 2 , 1
		  System.out.print(" ");	//	한 줄 안에서 먼저 나오는 글자의 개수 
		}		
		for (int j = 1; j < i + 1; j++) {  //	0 , 1 , 2 , 3, 4
			System.out.print("*");  //	한 줄 안에서 나중에 나오는 글자의 개수 
		}
       		// System.out.printf("\t%d, %d", num , i);	//	개수 확인용 
		System.out.println();	//	한줄의 출력이 끝나면 줄을 바꾼다 
		}
  }
}

study_review >>

공백과 별의 개수 변화를 파악했다해도, 어떻게 처리할지 막막했었는데, 각 for문이 어떠한 역할을 하는지를 먼저 생각하고 접근하고자 노력했다. for문의 구조가 어떤식으로 작동하는지를 정확히 알게된다면 별찍기는 쉽게 느껴질 것이다 !!

 

아직 구조에 대해 잘 모르겠다면,

표를 만들어서 개수 변화를 파악하거나, 문제 옆에 주석으로 개수 변화를 파악하는 것이 중요하다 

 

 

tip >>

i 를 사용하는 for문은 전체 열을 출력하는 for문  

j 를 사용하는 for문은 전체 행을 출력하는 for문

 

 

j  for 문은 별과 공백을 출력한다. 

   -> i  for 문 내부에 존재하여야함. 

 

i   for 문은 j의 출력이 끝나고 나면, 한줄띄워주는 역할을 수행한다. 

   -> 다음줄로 넘어가야하기 때문

'java' 카테고리의 다른 글

[ function ]  (0) 2023.12.01
[ for ] 별찍기 - 심화  (0) 2023.12.01
[ 프로그래머스 java ] 신규 아이디 추천 (Lv.1)  (0) 2023.11.27
[ String ] Luhn 알고리즘 & string 함수  (0) 2023.11.22
[ loop ] for, while 반복문  (0) 2023.11.20