Programming/BaekJoon

백준 2439번 별찍기 - 2

helloworld: 2021. 7. 15. 10:28

첫 번째 줄에는 공백이 4번, 별이 하나

두 번째 줄에는 공백이 3번, 별이 둘

...

이런 식으로 출력이 되어야 한다.

 

이중 for문을 이용하여 바깥 for문이 1 회전할 때마다

안쪽 for문은 N 회전하며 공백과 별을 출력할 것이다.

위와 같은 결과를 얻기 위해서는,

j가 N-i일 때까지는 공백을 출력하고 j가 N-i 이후부터 *을 출력해야 한다.

 

만약 5회전한다고 가정하면

첫번째 바깥 for문을 돌 때 안쪽 for문이 5번 돌면서

4회전은 공백을 출력하고 1회전은 *을 출력해야 한다.

 

두번째 바깥 for문을 돌 때 안쪽 for문이 5번 돌면서

3회전은 공백을 출력, 2회전은 *을 출력한다.

 

=> i가 1일 때 j가 5-1일 때까지는 공백 출력, 그 이후부터 * 출력

=> i가 2일 때 j가 5-2일 때까지는 공백 출력, 그 이후부터 * 출력

=> i가 3일 때 j가 5-3일 때까지는 공백 출력, 그 이후부터 * 출력

.....

 

이런 규칙이므로 삼항연산자를 이용하여

다음과 같이 풀어보았다.

 

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());

    BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
    for(int i = 1; i <= N; i++) {
      for(int j = 1; j <= N; j++) {
        String s = (j <= N-i) ? " " : "*";
        bw.write(s);
      }
      bw.write("\n");
    }
    bw.flush();
    bw.close();
    br.close();
  }
}