본문 바로가기
백준

[백준] 10996번 : 별 찍기 - 21 – JAVA [자바]

by Hongwoo 2022. 8. 8.
반응형

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

 

10996번: 별 찍기 - 21

예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요.

www.acmicpc.net

 


  • 문제

 

 


  • 문제 풀이

백준 10996번 별 찍기 - 21은 브론즈 2 난이도의 구현 문제이다. 이 문제에서는 예제에 나와있는 규칙을 유추하고 풀면 된다.

 

우선 이 문제에서 예제 출력들을 보면 총 출력 행은 2N 개라는 것을 알 수 있다.

 

그리고 출력을 보면 별과 공백이 번갈아 가며 출력이 된다. 홀수 행 ( i = 1, 3, 5,... ) 에는 별부터, 짝수 행 ( i = 2, 4, 6,... ) 에는 공백부터 출력된다. 또한 한 행의 공백과 별의 총 출력 개수는 N 개다.

즉, 2개의 for문이 필요하다는 것이다. 하나는 홀수 행, 또 하나는 짝수 행. 이렇게 두 가지 케이스로 나뉘게 된다. 

 

홀수 행에서는 N개의 출력을 하게 되는데 홀수 출력들은 별, 그리고 짝수 출력들은 공백이다. 반대로, 짝수 행에서도 마찬가지로 N개의 출력을 하게 되는데 홀수 출력들은 공백, 그리고 짝수 출력들은 별을 출력하게 된다.

 

이것을 코드로 옮긴 것은 밑에 있는 코드를 참고하면 되겠다.

 


  • 코드

 

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 <= 2*n; i++) {
            //홀수 행
            if (i % 2 == 1) {
                for (int j = 1; j <= n; j++) {
                    if (j % 2 == 1) {
                        sb.append("*");
                    } else {
                        sb.append(" ");
                    }
                }
            } else {
                //짝수 행
                for (int j = 1; j <= n; j++) {
                    if (j % 2 == 1) {
                        sb.append(" ");
                    } else {
                        sb.append("*");
                    }
                }
            }
            sb.append("\n");
        }
        System.out.print(sb);
    }
}

 

 

반응형

댓글