본문 바로가기

study/baekJun

[백준2446/자바/for문/별찍기]백준2446 별 찍기-9

출처 : https://www.acmicpc.net/problem/2446

이번 문제는 n을 입력하면

2n-1번째 줄까지 별을 출력한다

이때 n번째줄까지는 2n-1개부터 시작해서 홀수로 줄어드는 별을 출력하고

n+1번째 줄까지는 홀수로 별을 늘리는 것을 출력한다.

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

public class qn2446{
   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 num = Integer.parseInt(br.readLine()); //n입력
      int blank=0;
      int count = num*2-1;
      
      
      for(int i=num;i>0;i--){//n번째 줄까지 반복하되, 별은 줄어들게 i--
         
         for(int j=0;j<blank;j++){ //앞에 공백을 하나씩 늘려주는 for문
            bw.write(" ");
         }
         for(int j=0;j<(i*2)-1;j++){ //별 출력하게 홀수로 출력하도록
            bw.write("*");
         }
         bw.write("\n");
         blank ++;//공백은 점점 늘려간다
      }
      
      for(int i=1;i<=num;i++){//n번 반복하되 별은 하나씩 시작한다.
         if(i>1){
         for(int j=0;j<blank-1;j++){
            bw.write(" ");
         }
         for(int j=0;j<(i*2)-1;j++){
            bw.write("*");
         }
            bw.write("\n");
         }
         
         blank --; //이때는 공백은 점차 줄어듦
      }
      
      bw.flush();
      bw.close();
      br.close();
   }
}

위에는 줄어들고 아래는 늘어나는 구조인데

사실 아래 코딩은 일반별찍기를 고치지않고 그대로 갖다쓴것이다.

blank는 단순하지만 첫째줄 벗어나면 그때부터 하나씩 늘어나도록 for문을 짰고 한줄이 끝나면 공백의 수는

하나씩 늘어나도록 설정했다.