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