Java/백준알고리즘

백준알고리즘 #2446 별 찍기 - 9 java

Sehyeok20 2020. 3. 30. 04:28
반응형

백준알고리즘 #2446 별찍기 -9

앞선 별 찍기보다 조금 복잡한 문제이다. 규칙을 유추해 보자면 5를 입력했을 때 9 7 5 3 1 3 5 7 9 순으로 별이 찍혔다.

다만 이렇게 별이 찍힌다면 단순히 2n -1, 2n-3 ... 1 ...2n-3, 2n-1 순으로 별을 찍으면 되겠지만 예제 출력에 보면 빈칸이 앞에 붙어있다. 먼저 코드를 보면

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner s = new Scanner(System.in);
		int n = s.nextInt();
		for (int i = n - 1; i > 0; i--) {
			for (int j = 1; j < n - i; j++) {
				System.out.print(" ");
			}
			for (int j = 0; j <= 2 * i; j++) {
				System.out.print("*");
			}
			System.out.println("");
		}
		for (int i = 0; i < n; i++) {
			for (int j = 1; j < n - i; j++) {
				System.out.print(" ");
			}
			for (int j = 0; j <= 2 * i; j++) {
				System.out.print("*");
			}
			System.out.println("");
		}

	}
}

조금 복잡해 보이지만 감소하는 부분(첫번째 for문) 과 증가하는 부분(두번째 for문)으로 나누어 보면 편하다.

감소하는 부분에서 빈칸이 0,1,2,3 순으로 들어갔기 때문에 "*"을 입력하는 for문 앞에 새로운 for문을 넣어서 빈칸을 넣어주고, 마찬가지로 두번째 for문에도 4,3,2,1,0 순으로 빈칸을 넣어주면 된다.

반응형