본문 바로가기
백준

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

by Hongwoo 2022. 4. 22.
반응형

별 찍기 - 8https://www.acmicpc.net/problem/2445

 

2445번: 별 찍기 - 8

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

www.acmicpc.net

 


  • 문제

 

 


  • 문제 풀이

백준 2445번 별 찍기 - 8는 브론즈 3 난이도의 구현 문제이다. 이 문제에서도 마찬가지로 예제에서 패턴이 주어지고 패턴에 나와있는 것처럼 별을 출력해주면 된다. 

 

이 문제도 이중 for-loop을 이용해서 푼다. 우선 바깥 for-loop은 i = 1부터 시작하고 i = n까지이다.

 

그리고 패턴을 보면 *이 i개만큼 양 끝에 있고 가운데에는 2n - 2i개만큼의 스페이스가 있다. 이거를 n번 반복한다.

 

그렇게 하면 일단 n이 5일 때, 다음과 같은 결과를 얻는다.

 

*        *
**      **
***    ***
****  ****
**********

 

그다음에는 새로운 이중 for-loop을 만들어준다. 이번 경우에는 바깥 for-loop에서는 i가 n-1에서 시작하고 i = 1이 되면 멈춘다.

 

그리고 별이 i개만큼이 양 끝에 있고 가운데에는 2n - 2i개만큼의 스페이스가 있다. 이 과정을 반복해주면 답을 얻을 수 있다.

 


  • 코드

 

import java.io.*;
import java.math.BigInteger;
import java.util.*;
public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine());
        StringBuilder sb = new StringBuilder();
        for (int i = 1; i <= n; i++) {
            for (int j = 1; j <= i; j++) {
                sb.append("*");
            }
            for (int j = 1; j <= 2*n-2*i; j++) {
                sb.append(" ");
            }
            for (int j = 1; j <= i; j++) {
                sb.append("*");
            }
            sb.append("\n");
        }
        for (int i = n-1; i >= 1; i--) {
            for (int j = 1; j <= i; j++) {
                sb.append("*");
            }
            for (int j = 1; j <= 2*n-2*i; j++) {
                sb.append(" ");
            }
            for (int j = 1; j <= i; j++) {
                sb.append("*");
            }
            sb.append("\n");
        }
        System.out.print(sb);
    }
}

 


  • 후기

이 별 찍기 문제도 마찬가지로 크게 어려운 거는 없었다.

 

반응형

댓글