본문 바로가기
백준

[백준] 2444번 : 별 찍기 - 7 – JAVA [자바]

by Hongwoo 2022. 4. 23.
반응형

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

 

2444번: 별 찍기 - 7

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

www.acmicpc.net

 


  • 문제

 

 


  • 문제 풀이

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

 

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

 

우선 i가 1일 때, 스페이스가 4개가 있는 거를 볼 수 있다. 즉, j = 1부터 n - i까지인 for-loop을 만든다. 이 for-loop에서는 스페이스만 추가한다.

 

그리고 보면 i = 1일 때, *이 1개, i = 2일 때, *이 3개인 것을 볼 수 있다. 즉, 별이 2 × i - 1개 있다는 것이다. 이것도 새로운 for-loop을 만들어서 해준다.

 

일단 이렇게 하면 다음과 같은 결과를 얻는다.

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

 

그다음에는 예제에 나와 있는 나머지 4줄을 하면 된다.

 

새로운 이중 for-loop을 만들어 준다. 이번에는 i = n - 1부터 i가 1이 될 때까지 이다. 이중 for-loop 안에 들어가는 내용은 이전과 같다.

 


  • 코드

 

import java.io.*;
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 <= n-i; j++) {
                sb.append(" ");
            }
            for (int j = 1; j <= 2*i-1; j++) {
                sb.append("*");
            }
            sb.append("\n");
        }
        for (int i = n-1; i >= 1; i--) {
            for (int j = 1; j <= n-i; j++) {
                sb.append(" ");
            }
            for (int j = 1; j <= 2*i-1; j++) {
                sb.append("*");
            }
            sb.append("\n");
        }
        System.out.print(sb);
    }
}

  • 후기

이전에 풀었던 별 찍기 문제들처럼 어려운 거는 없는 문제였다.

 

반응형

댓글