https://www.acmicpc.net/problem/2445
[문제]
[코드]
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 = 0; i < N; i++) {
for(int j=0; j <= i; j++)
System.out.print("*");
for(int k=i; k < N*2-(i+2); k++)
System.out.print(" ");
for(int l=0; l <= i; l++)
System.out.print("*");
System.out.println();
}
for(int i = 1; i < N; i++) {
for(int j=i; j < N; j++)
System.out.print("*");
for(int k=1; k <= i*2; k++)
System.out.print(" ");
for(int l=i; l < N; l++)
System.out.print("*");
System.out.println();
}
sc.close();
}
}
[설명]
1. 몇 행을 출력할지를 알기위해 키보드로 N을 입력 받는다.
2. 첫 번째 for문은 위쪽을 출력하기 위해 만들고 두 번째 for문은 아래쪽을 출력하기 위해 만든다.
3. 첫 번째 for문의 안 쪽 첫 번째 for문은 왼쪽의 별을 출력하기 위해 작성한다. 별은 1개부터 N개까지 증가해야 하기때문에 0부터 i까지 범위를 지정한다.
4. 첫 번째 for문의 안 쪽 두 번째 for문은 공백을 출력하기 위해 작성한다. N이 5라면, 1행의 공백은 8개가, 2행의 공백은 6개....N행은 0개가 나와야 하기 때문에 j는 0부터 N*2-(i+2)까지 돌때마다 1씩 증가해야한다.
5. 첫 번째 for문의 안 쪽 세 번째 for문은 별을 출력해야한다. 1씩 증가하기 때문에 안쪽의 첫 번째 for문과 똑같이 작성하면 된다.
6. 그 다음 행을 바꿔주기 위해 System.out.println();을 작성한다.
7. 두 번째 for문의 안 쪽 첫 번째 for문은 별을 출력하기 위해 작성한다. 별은 N-1개부터 1개까지 1개씩 감소하기 때문에 위의 코드처럼 작성해 주면 된다.
8. 두 번째 for문의 안 쪽 두 번째 for문은 공백을 출력하기 위해 작성해야 한다. 공백은 점점 늘어나기 때문에 위의 코드로 작성하면 된다.
9. 두 번째 for문의 안 쪽 세 번째 for문은 별을 출력해야 한다. 1씩 감소하기 때문에 안쪽의 첫 번째 for문과 똑같이 작성하면 된다.
[결과]
'백준(Baekjoon)' 카테고리의 다른 글
[백준] 1284번: 집 주소 - 자바 (0) | 2022.04.03 |
---|---|
[백준] 2446번: 별 찍기 - 9 -자바 (0) | 2022.04.02 |
[백준] 1267번: 핸드폰 요금 - 자바 (0) | 2022.03.31 |
[백준] 별 찍기 - 7- 자바 (0) | 2022.03.29 |
[백준] 2443번 별 찍기 - 6- 자바 (0) | 2022.03.26 |