본문 바로가기
백준(Baekjoon)

[백준] 별 찍기 - 7- 자바

by IT 정복가 2022. 3. 29.
728x90

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

 

2444번: 별 찍기 - 7

첫째 줄부터 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 = 1; i <= N; i++) {
			for(int j = N; j > i; j--)
				System.out.print(" ");
			for(int k = 0; k < i*2-1; k++)
				System.out.print("*");
			System.out.println();
		}
		for(int i = N; i > 1; i--) {
			for(int j = 0; j <= N-i; j++)
				System.out.print(" ");
			for(int k = 2; k < i*2-1; k++)
				System.out.print("*");
			System.out.println();
		}
		sc.close();
	}
}

[설명]

1. 몇 행을 출력할지를 알기위해 N을 입력받는다.

2. 마름모 모양을 출력해야하기 때문에 그것을 고려해서 바깥쪽 for문을 2개 작성한다.

3. 바깥쪽의 첫 번째 for문은 행을 나타내는데 N개만큼 출력되어야 하기 때문에 위의 코드처럼 작성한다.

4. 안 쪽의 첫 번째 for문은 공백을 나타내는데 공백이 하나씩 줄어들아야 하기때문에 위의 코드처럼 작성한다.

5. 안 쪽의 두 번째 for문은 행마다 별을 출력하는 것을 나타내는데 1행은 1개 2행은 3개...N행은 N*2-1행이기 때문에 위의 코드처럼 작성한다.

6. 행을 바꾸기 위해 System.out.println();을 작성한다.

7. 바깥쪽의 두 번째 for문은 마름모의 아래쪽을 출력하기 위해 사용되는데 N-1행 만큼 출력되야 하기 때문에 위의 코드처럼 작성한다.

8. 안 쪽의 첫 번째 for문은 공백을 나타내는데 첫 행에 공백을 하나 주고 공백이 하나씩 늘어나야 하기때문에 위의 코드처럼 작성한다.

9. 안 쪽의 두 번째 for문은 별을 출력하는 것을 나타내는데 N이 만약에 5라면 1행은 7개 2행은 5개...4행은 1이 나와야 하기 때문에 위의 코드처럼 작성해 준다.

10. 행을 바꾸기 위해 System.out.println();을 작성한다.  


[결과]

 

728x90