본문 바로가기

알고리즘/백준

[백준 / 입출력] 2439 : 별 찍기 - 2 (Java)

728x90

<정답>

import java.io.*;

public class Main{
    public static void main(String args[]) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine());
        StringBuilder sb = new StringBuilder();
        
        for(int i=0; i<n; i++){
            for(int j=0; j<n; j++){
                if(n-i-1 <= j){
                    sb.append('*');
                } else{
                    sb.append(' ');
                }
            }
            sb.append("\n");
        }
        System.out.print(sb);
    }
}

공백과 * 모두 나타내야하므로 n이라는 숫자를 입력받으면 내부가 *과 공백으로 구성된 nxn 정사각형이 나온다고 보면된다. 그래서 반복문 i와 j모두 n만큼씩 돌아가도록 했다.

 

공백을 #라고 하고, n=5인 경우

0 1 2 3 4

# # # # *

# # # * *

# # * * *

# * * * *

* * * * *

 

첫번째줄에 *이 찍히는 위치는 4이다. i를 이용한 식으로 나타내면 n-i-1이다. (첫번째 줄일때 i는 0이므로)

두번째 줄에 *이 찍히는 위치는 3, 4 번째 위치이다. n-1-i = 3이므로 j가 3보다 크거나 같을 때 *이 찍힌다.

따라서 n-i-1 <= j 일때 *이 찍히도록 했다.

 

 

 

반응형