본문 바로가기
백준(Baekjoon)

[백준] 2445번: 별 찍기 - 8 - 자바

by IT 정복가 2022. 4. 1.
728x90

https://www.acmicpc.net/problem/2445

 

2445번: 별 찍기 - 8

첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다.

www.acmicpc.net


[문제]


[코드]

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문과 똑같이 작성하면 된다.

 


[결과]

 

728x90