[Java] 백준 2445번 : 별 찍기 - 8 / 코드 O

노현아·2024년 3월 27일
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        StringBuilder sb = new StringBuilde r();
        for (int i = 1; i <= (2 * n) - 1; i ++) {
            int k = i;
            if (i > n) {
                k = (n * 2) - i;
            }
            int j;
            for (j = 0; j < k; j ++) {
                sb.append("*");
            }
            for (j = 0; j < (2 * n) - (2 * k); j ++) {
                sb.append(" ");
            }
            for (j = 0; j < k; j ++) {
                sb.append("*");
            }
            sb.append("\n");
        }
        System.out.print(sb);
    }
}

 /**
    1 8 1 => i = 1, 구조 : i, 2n - 2i, i
    2 6 2 => i = 2
    3 4 3
    4 2 4
    5 0 5 => i = 5
    4 2 4 => i = 6  : 10 - i, i > n일 때, i를 n * 2 - i로 바꿈
    3 4 3 => i = 7 : 10 - 7, 3
    2 6 2
    1 8 1 
    
    String에 + 로 뒤에 char을 붙이면 매번 String이 새로 만들어지면서
    공간 복잡도가 커지므로, StringBuilder를 사용.
 
 **/
profile
성실함과 끊임없는 학습을 통해 성장하는 개발자 지망생입니다. 새로운 도전과 배움을 즐기며 더 나은 코드를 꿈꿉니다.

0개의 댓글