실습/백준

별 찍기 7 - 2444번 (Java 풀이)

chobyeonggyu03 2024. 7. 18. 14:54
반응형

문제

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

 

 

입력

첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.

 

 

출력

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

 

 

예제 입력 1 

5

예제 출력 1 

    *
   ***
  *****
 *******
*********
 *******
  *****
   ***
    *

 

 

 

이 문제를 처음 봤을 때 가장 먼저들었던 생각은 저번에 마름모의 절반을 구현해보았었기 때문에 왼쪽부분을 구현하고

" "공백과 별의 위치를 바꿔 0번쨰부터 시작하는 것이아니라 n번쨰 부터 뒤집은 마름모를 출력해주면 될 것 같다는 생각이 들어 저번에 구현했던 코드를 기반으로 풀이를 진행보았다.

 

 

 

하지만 풀이 동중 윈쪽와 오른쪽으로 나눠서 구현하는건 저번에 짜두었던 반복문 구조에 맞지 않았고, 위 아래로 나누어 별의 출력개수가 홀수단위로 늘어나고 줄어드는 것을 활용해 코드를 수정하게 되었다.

 

 

 

 

package BAEKJOON_2444;

/*
 날짜: 2024.07.18.목
 내용: 백준 2444번 문제 (별 찍기7)
 */

import java.util.*;

public class BAEKJOON_2444 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		int n = sc.nextInt();							// 한라인에 별의 최대 갯수 입력받기
		
		
		for (int i=1; i<=n; i++) {						// 윗부분	(공백은 점점감소 별은 홀수단위로 증가)
			for (int j= n-i; j > 0; j--) {
			    System.out.print(" ");
			}
			
		    for (int j=1; j<=(2*i-1); j++) {			// 별을 홀수(2n-1)개씩 증가 -> 1,3,5,7,9,...
                System.out.print("*");
            }
			System.out.println();
		}
		


		for (int i=n-1; i>=1; i--) {					 // 아랫부분 (공백은 점점증가 별은 홀수단위로 감소) + n-1부터 감소하기 시작 (최대라인 한줄임)
            for (int j=1; j<=n-i; j++) {				 
                System.out.print(" ");
            }

            for (int j=1; j<=(2*i-1); j++) {			 // 별을 홀수(2n-1)개씩 감소 -> 7,5,3,1,...
                System.out.print("*");
            }
            System.out.println();
        }
		
	}

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형