will come true

[BOJ] 백준 2445번 - 별 찍기 8 본문

Algorithm

[BOJ] 백준 2445번 - 별 찍기 8

haehyun 2021. 11. 11. 14:45
728x90

문제

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

 

2445번: 별 찍기 - 8

첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다.

www.acmicpc.net

 

풀이

  • N : 5 => 9줄 출력
    N : 6 => 11줄 출력
    N : 7 => 13줄 출력
    N : 8 => 15줄 출력
    N : 10 => 19줄 출력
  • N에 2를 곱하면 짝수가 되는데 여기서 -1을 하니까, 출력되는 줄 개수는 언제나 홀수
  • N * 2 -1은 N + N + -1 과 같음
  • N줄, N-1줄을 각각 for문으로 나눠서 출력한다. (서로 증감 규칙이 다르니까)

  • 별 개수 - N 간의 관계를 파악한다.
    for문 (1) : 별 개수 = (1 * 2) ~ (N * 2), 증가
    for문 (2) : 별 개수 = (N - 1) ~ (1 * 2), 감소
  • 공백 개수 - 별 개수 간의 관계를 파악한다.
    공백 개수 = (N * 2) - 해당 라인의 별 개수

 

코드

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		StringBuffer sb = new StringBuffer();
        int n = sc.nextInt();
        
        //for문 (1)
        for(int i = 1; i <= n; i++){
            for(int j = 1; j <= i; j++){
                sb.append("*");
            }
            for(int j = 1; j <= (n * 2) - (i * 2); j++){
            	sb.append(" ");
            }
            for(int j = 1; j <= i; j++){
            	sb.append("*");
            }
            sb.append("\n");
        }
        //for문 (2)
        for(int i = n -1; i >= 1; i--){
            for(int j = 1; j <= i; j++){
            	sb.append("*");
            }
            for(int j = 1; j <= (n * 2) - (i * 2); j++){
            	sb.append(" ");
            }
            for(int j = 1; j <= i; j++){
            	sb.append("*");
            }
            sb.append("\n");
        }
        System.out.print(sb);
	}
}
728x90
Comments