[백준]2444번: 별 찍기 - 7(Java)

ywwwon01·2022년 8월 6일
0

알고리즘

목록 보기
7/13

문제

🔗 2444번: 별 찍기 - 7

첫 번째 시도

code

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

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

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

        for (int i = 1; i <= 2 * n - 1; i++) {
            if (i <= n) {
                for (int j = 1; j <= n - i; j++) {
                    bw.write(" ");
                }
                for (int j = 1; j <= 2 * i - 1; j++) {
                    bw.write("*");
                }
            }
            else {
                for (int j = 1; j <= i % n; j++) {
                    bw.write(" ");
                }
                for (int j = 1; j <= (2 * n - 1) - 2 * (i % n); j++) {
                    bw.write("*");
                }
            }
            bw.write("\n");
        }
        bw.flush();
    }
}

review

저는 이번 문제를 풀기 위해

몇 번째 줄인지 저장해두는 변수인 i가 입력받은 변수 n보다

값이 작은 지, 큰 지를 두고 if문으로 분기하여 풀어보았습니다.

그리고 in보다 커졌을 때는 (i % n)번째 줄로 다시 계산하도록 했습니다.

즉, n = 5일 때 6번째 줄 부터는 다시 첫 번째 줄로 보고 i가 n보다 작을 때와는 반대로 별을 찍도록 한 것입니다.

이게 무슨 말인지..

말로 정리하기가 쉽지 않네요..

이상입니다.

profile
생각의 전개를 공유합니다.

0개의 댓글