본문 바로가기
코딩/JAVA

자바 숫자 N 입력한 뒤 피라미드로 별(*) 찍기

by 크르르 2024. 8. 19.
320x100
import java.util.Scanner;

public class Test1 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("N을 입력하세요: ");
        int N = scanner.nextInt();

        // 이거 아래는 라인 개수임 예를 들어어서 N이 3이면 0 1 2 해서 3줄
        for (int i = 0; i < N; i++) {
            // 공백 개수를 해야함 왜냐하면 공백이 먼저 와야 피라미드 식으로 나오기 때문에 공백 다음에 * 이 와야함
            // 별의 개수는 공백에서 i, 즉 라인 개수보다 하나 작아야함 왜냐하면 피라미드 구조이기 때문에 마지막 줄은 공백이 없어야함
            // 그리고 첫줄의 공백은 라인의 수 보다 1이 작은거로 공백이 나와야함 (피라미드 구조가 1 3 5 7 9 이런식으로 나오니까)
            for (int j = 0; j < N - i - 1; j++) {
                System.out.print(" ");
            }
            // N이 3일대 별은 1 3 5 줄마다 N이 1,2,3 이면 1일때 1개  / 2일때 3개  / 3일때 5개 / 4일때 7개다.
            // 이것의 규칙성은 피보나치로 반복문 규칙임
            // N이 1이면 0 < 2 * 0 +1 로 별 개수는 하나 공백은 0개가 됨
            // 그렇게 해서 N을 3으로하면 줄 개수는 0 1 2 로 3줄
            // 공백은 첫번째 줄 순서로 2 1 0 으로 공백 만들어짐
            // 별개수는 1 3 5 가 돼야함 . >> i * 2 + 1 >> 1 , 3 , 5
            for (int j = 0; j < 2 * i + 1; j++) {
                System.out.print("*");
            }
            // 줄 바꿈
            System.out.println();
        }
    }
}
반응형

 

반응형