알고리즘

[백준] 입출력 - 10992번, 별찍기 17

hatch 2023. 3. 23. 11:12
728x90
반응형

* 공부 목표

입출력 - 2557, 1000, 2558, 1095010951, 10952, 1095311021, 11022, 11718, 1171911720, 117212741, 2742, 27391924, 8393, 108182438, 2439, 24402441, 244224452522, 244610991, 10992

  • 10992번

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

 

1. Br+Bw

 1) line 수는 n. -> n회 반복.
 2) 1, 2n-1(마지막) 별 정상 출력.
 3) 사잇값 = 처음, 끝 값만 출력.

 

 - 중첩 for문을 사용해서 피라미드 형태로는 만들었으나, 3번 사잇값 부분 해결 안 됨.

어떻게 해야 가운데는 텅텅 비게하지? => 참고 블로그 내용 보며 보완함.

(1. 제일 마지막 i==num의 값이 동일할 때는 전체 별 출력. 2. 사이값은 조건문을 통해 해결)

import java.util.*;
import java.io.*;

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 num = Integer.parseInt(br.readLine());
		br.close();
		
		for(int i=1; i<num+1; i++) {
			if(i==num) {
				for(int j=1; j<2*i; j++) {
					bw.write("*");
				}
				bw.write("\n");
				break;
			}
			for(int j=1; j<num+1-i; j++) {
				bw.write(" ");
			}
			for(int j=1; j<2*i; j++) {
				if(j==1 || j==2*i-1) {
					bw.write("*");
				} else {
					bw.write(" ");
				}
			}
			bw.write("\n");
		}
		bw.flush();
		bw.close();
	}
}

 

[참고] https://alpyrithm.tistory.com/228