[APS] 백준 10990 : 별 찍기 - 15

u_yonu·2026년 2월 5일

APS

목록 보기
2/9
post-thumbnail

개요

문제 : 백준 10990. 별 찍기 - 15
백준 10990 별 찍기 - 15

[문제 분석]

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

[입력]

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

[출력]

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

[풀이 전략]

처음 생각했을 때, 생각했던 로직은 다음과 같다
(1) 빈칸 / / 빈칸 / 구조로 구현
(2) 조건문 : 처음에만 실제 별이 하나가 나타나야함
(3) 첫 번째 빈칸 N-1~0개으로 줌
(3) 가운데 빈칸 0, 1, 3, 5으로 증가함

[구현코드]

import java.util.Scanner;

public class Main {
public static void main(String[] args) {

	
Scanner sc = new Scanner(System.in);
int N = sc.nextInt(); 
for(int i = 0 ; i < N ; i++) {
	for(int j = 1 ; j < N-i  ; j++) { 
		System.out.print(" ");
		}
	if (i!=0)
		System.out.print("*");
	for(int j = N -2*i+1 ; j < N ; j ++) { 
		System.out.print(" ");
		}
	
	System.out.print("*");
	
	System.out.println();
	
}
}
}

[개선사항]

  1. 절대값을 사용
    Math.abs() 메서드는 입력된 숫자의 절댓값(Absolute Value)을 반환하는 Java의 표준 수학 함수이다. 단순히, 부호를 없애는 함수를 넘어 실제 기준점으로부터의 거리(Distance)를 계산하여 대칭으로 만들어내는 핵심 역할 수행

  2. 문제 접근 방식
    핵심 : 좌표 기반 접근
    => 별이 찍히는 위치를 중심축으로부터의 거리로 해석
    중심축 : j = N인 지점을 중심축으로 봄
    거리계산 : |N - j| 중심축(N)과 현재 가로위치(j) 사이의 거리
    별의 위치 : 위에서 아래로 내려올수록(i가 증가할수록), 별은 중심축에서 i만큼 떨어진 양쪽 대칭 지점에 찍힘

  1. 풀이적용
import java.util.Scanner;
public class Main{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        // 세로(N)
        for (int i=0; i<N;i++) {
            // 가로 (N+세로 길이)
            for (int j=1; j<=N+i;j++) {
                // i == |N - j| 라면 * 찍기
                if (i==Math.abs(N-j))
                    System.out.print("*");
                // 아닌 경우 공백
                else
                    System.out.print(" ");
            }
            System.out.println();
        }
    }
}

오늘은 맛있는 런치야미 끝

profile
비전공자의 개발도전기

0개의 댓글