java

백준 2444번 문제 별 찍기 - 7(Java_자바)

먼지제거제 2024. 3. 8. 19:47

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

 

2444번: 별 찍기 - 7

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

www.acmicpc.net

 

 

2444번 문제 별 찍기 -7
조건 및 예제 입력/출력

 

 

별 예제는 다른 부분들도 있는데

별 문제에서 가장 어렵지 않나 싶다..

 

풀어보자!


 

int n = sc.nextInt();

 

예제 입력값 '5'를 담을 변수 선언해 주자!

 

// 위쪽 부분 출력
for (int i = 1; i <= n; i++) {
    for (int j = 0; j < n - i; j++) {
        System.out.print(" ");
    }
    for (int j = 0; j < 2 * i - 1; j++) {
        System.out.print("*");
    }
    System.out.println();
}

 

피라미드

 

1행: 공백 4개, 별 1개
2행: 공백 3개, 별 3개
3행: 공백 2개, 별 5개
4행: 공백 1개, 별 7개
5행: 공백 0개, 별 9개

 

위쪽 부분부터 출력해 주자!

1. 행 부분 출력 for문 ' i부터 n까지 반복 '

 

2. 열 부분 중 첫 번째 for문 각 줄의 시작 위치에 공백을 출력, 공백의 개수는 ' n - i '

즉, 현재 행보다 위쪽에 위치한 공백의 개수

 

3. 열 부분 중 두 번째 for문 각 줄에 별을 출력, 별의 개수는 ' 2 * i - 1 '

즉, 여기서 '-1'은 첫 번째 줄부터 공백이 없는 경우를 제외

 

 

// 아래쪽 부분 출력
for (int i = n - 1; i > 0; i--) {
    for (int j = 0; j < n - i; j++) {
        System.out.print(" ");
    }
    for (int j = 0; j < 2 * i - 1; j++) {
        System.out.print("*");
    }
    System.out.println();
}

 

역피라미드

 

행 for문 ' 0부터 n - i로 i를 감소 ' 말고는

피라미드, 역피라미드 열 코드가 동일

 

그래서!!

피라미드는

공백의 개수가 줄어들고, 별의 개수는 증가,

역피라미드는

공백의 개수는 늘고, 별의 개수는 감소

 

 

이제 합쳐보자!


 

Scanner

 

import java.util.Scanner;

public class star_2444 {
    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 = 0; j < n - i; j++) {
                System.out.print(" ");
            }
            for (int j = 0; j < 2 * i - 1; j++) {
                System.out.print("*");
            }
            System.out.println();
        }
        
        for (int i = n - 1; i > 0; i--) {
            for (int j = 0; j < n - i; j++) {
                System.out.print(" ");
            }
            for (int j = 0; j < 2 * i - 1; j++) {
                System.out.print("*");
            }
            System.out.println();
        }

    }
}

 

 

마름모 출력!

 

 

성공!!

 

BufferedReader로 출력해 보자!


 

BufferedReader

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class star_2444 {
    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine());

        for (int i = 1; i <= n; i++) {
            for (int j = 0; j < n - i; j++) {
                System.out.print(" ");
            }
            for (int j = 0; j < 2 * i - 1; j++) {
                System.out.print("*");
            }
            System.out.println();
        }

        for (int i = n - 1; i > 0; i--) {
            for (int j = 0; j < n - i; j++) {
                System.out.print(" ");
            }
            for (int j = 0; j < 2 * i - 1; j++) {
                System.out.print("*");
            }
            System.out.println();
        }

    }
}

 

성공!!

 


 

화이팅!