본문 바로가기

백준 알고리즘

백준 2349번 별찍기-2 자바

반응형

이번 문제는 지난번에 풀었던 별찍기의 두번째 문제이다.

지난번에는 

3을 입력하면 

*

**

*** 

이런 식으로 점점 늘어났는데, 이번에는 

6을 입력하면

     *

    **

   ***

  ****

 *****

******

이런 식으로 반대모양의 삼각형이 주어진다.

어떻게 구현하면 될지 가이드라인을 먼저 잡아보자.

 

for문에 for문을 넣어 사용하면 한 줄씩 출력하기가 가능할 것이다.

 

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
	Scanner sc = new Scanner(System.in);
	int N = sc.nextInt();
	
	for(int i=1;i<=N;i++) {
		for(int j=1;j<=N-i;j++) {
			System.out.print(" ");
			//print(" "); 공백은 N-i번 반복한다.
		}
		for(int k=0;k<i;k++) {
			System.out.print("*");
			//print("*"); 별의 개수는 i개 만큼 출력한다.
		}
		System.out.println(); 
		//print('\n'); 한 행의 출력 끝나면 줄바꿔야한다.
    }
  }
}

 

 

for(int i=1;i<=N;i++) {
for(int j=1;j<=N-i;j++) {
System.out.print(" ");	
}
        
//print(" "); 공백은 N-i번 반복한다.

1. 첫 번째 for문을 N번 반복해서 N개의 줄이 출력되게 만든다.

 

for(int k=0;k<i;k++) {
System.out.print("*");	
}
        
//print("*"); 별의 개수는 i개 만큼 출력한다.

2. for문 안에 for문을 넣어 (" ")를 적어서 공백을 N-i번 반복 출력하게 만든다.

 

System.out.println(); 

//print('\n'); 한 행의 출력 끝나면 줄바꿔야한다.

3. for문을 사용해서 ("*")를 적어 *을 각 줄에서 i개 만큼 출력하게 만든다.

여기서 조심해야 할 것은 println()을 사용하는 것이 아니라, print() 메서드를 사용해야 하는 것이다.

 

이 때 하나 더 중요한 것은 한 행의 출력이 끝나면 줄을 바꿔야 한다. 첫 번째 for문이 한번 끝날 때 줄을 바꿔야 하니

마지막부분에 System.out.println();을 넣어 print( '\n' ); 의 기능을 넣으면 된다.

 

별 찍기가 몇개 있는 것 같은데, 잘 정립하고 다시 풀어서 for문 마스터하자.

자바 파이팅 ㅠㅠ

반응형