반응형
속이 빈 트리모양의 별을 출력하는 문제이다.
2021.01.12 - [C/백준알고리즘] - [C] 백준알고리즘 #2442 #2443 별 찍기 - 5 , 6 (트리, 역트리)
for문 구성은 C나 Java나 동일하므로 앞서 작성했던 트리 모양의 별 찍기를 참고해보자.
위와같은 트리 구조에서 가운데가 비어있는 공간을 만들어야 하므로 별을 하나만 찍어야 한다.
앞선 코드를 조금 수정해보자.
for (int i = 0; i < n; i++) {
for (int j = n - 1; j > i; j--) {
System.out.print(" ");
}
System.out.print("*");
}
앞서 했던 예시에서는 i가 1부터 시작했지만 이번에는 0부터 시작하여 j의 범위를 n-1부터 시작하도록 하였다.
빈칸을 찍고 나서 *을 하나만 찍으려면 for문이 끝나고 나서 *을 찍으면 되겠다. 위 결과는 다음과 같이 나온다.
이제 이어서 빈칸을 찍는 코드를 작성해보자.
for (int i = 0; i < n; i++) {
for (int j = n - 1; j > i; j--) {
System.out.print(" ");
}
System.out.print("*");
for (int j = 0; j < 2 * i - 1; j++) {
System.out.print(" ");
}
}
앞선 코드에서 *을 빈칸으로 바꾸었다.
이제 마지막으로 *을 하나 출력해주고 줄을 바꾸어주면 된다.
for (int i = 0; i < n; i++) {
for (int j = n - 1; j > i; j--) {
System.out.print(" ");
}
System.out.print("*");
for (int j = 0; j < 2 * i - 1; j++) {
System.out.print(" ");
}
if (i > 0)
System.out.print("*");
System.out.println("");
}
}
다만 이 때, 첫 줄에는 별이 하나만 있으므로 i = 0 (첫번째 줄)은 제외하고 i가 1일때부터 *을 출력해주고 줄을 바꿔주면 된다.
전체 코드를 보면 다음과 같다.
import java.util.Scanner;
public class Back10990 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
for (int i = 0; i < n; i++) {
for (int j = n - 1; j > i; j--) {
System.out.print(" ");
}
System.out.print("*");
for (int j = 0; j < 2 * i - 1; j++) {
System.out.print(" ");
}
if (i > 0)
System.out.print("*");
System.out.println("");
}
}
}
반응형
'Java > 백준알고리즘' 카테고리의 다른 글
[Java] 백준알고리즘 #1010 다리 놓기 (0) | 2021.03.26 |
---|---|
[Java] 백준알고리즘 #1157 단어 공부 (0) | 2021.03.23 |
[Java] 백준알고리즘 #2675 문자열 반복 (0) | 2021.03.19 |
[Java] 백준알고리즘 #10809 알파벳 찾기 (0) | 2021.03.19 |
[Java] 백준알고리즘 #1436 영화감독 숌 (0) | 2021.03.18 |