ezhoon

[백준] 2442_별 찍기 - 5_Java 본문

[Java] 백준 문제풀이/입출력과 사칙연산

[백준] 2442_별 찍기 - 5_Java

ezhoon 2022. 1. 12. 21:00

백준 2442

 

2442번: 별 찍기 - 5

첫째 줄에는 별 1개, 둘째 줄에는 별 3개, ..., N번째 줄에는 별 2×N-1개를 찍는 문제 별은 가운데를 기준으로 대칭이어야 한다.

www.acmicpc.net

⚠️ 주의사항

  • 별의 수가 2*N-1개
  • 별은 가운데를 기준으로 대칭

주의사항 1번은 별 출력 for문의 최대 조건을 말해주는 것이다.

가운데를 만드는 방법은 아래 문제풀이 코드를 보면서 설명하겠습니다.

 


문제풀이


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

public class InputOutput_2442 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();

        int N = Integer.parseInt(br.readLine());

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

 

 

가운데 정렬을 하는데 5를 입력 받았을 경우를 예시로 들어보겠습니다.

최대로 찍히는 별은 2*N - 1이므로 9개 입니다. 그러므로 1개가 찍히는 첫 번째 열은 5번째가 정중앙이므로 아래와 같이 공백이 생깁니다.

  • 1번째 4칸의 공백
  • 2번째 3칸의 공백
  • 3번째 2칸의 공백
  • 4번째 1칸의 공백
  • 5번째 0칸의 공백

이렇게 생기므로 공백은 아래 for문처럼 만들어주면 됩니다.

for (int j = 0; j < N - i; j++)

 

Comments