Algorithm/Java

[백준] n.2444 - 마름모모양 별 찍기 (중앙 정렬, 규칙에 따라)

보라해바라기 2023. 5. 25. 10:18
SMALL

1. 문제
https://www.acmicpc.net/problem/2444

 

2444번: 별 찍기 - 7

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

www.acmicpc.net

 

2. 주요 개념
- StringBuilder
- append()
- deleteCharAt()

- length()

- for문

- Scanner

3. 나의 풀이 (*은 잘 안풀린 부분)

import java.io.*;
import java.util.*;

class Main {

  public static void main(String[] args) {

    Scanner s = new Scanner(System.in);

    int n = s.nextInt();
    StringBuilder star = new StringBuilder("");
    // *append, deleteCharAt 사용을 위해 StringBuilder로 선언

    // 윗 삼각형
    for(int i=0; i<n; i++) { // idx: 0 1 2 3 4
      if (i>0) {
        star.deleteCharAt(0);// 맨 앞 공백 제거 (중앙 정렬을 위해) 
        for (int j=0; j<2; j++) {
        star.append("*");
        // 맨 뒤에 값 추가
        }
      } else { // 맨 첫 줄 값!
        for (int t=1; t<n; t++) {
          star.append(" "); // 공백 설정 (4개의 공백)
        }; 
        star.append("*");
      }
      System.out.println(star);
    }

    // 아래 삼각형
    for(int i=n-1; i>0; i--) {//idx: 4 3 2 1 값을 순차 제거
      star.insert(0, " ");
      // 맨 앞에 공백 추가
      for (int j=0; j<2; j++) {
        star.deleteCharAt(star.length()-1);
        // * 마지막 문자 제거 
        // * stringbuilder의 길이: length()
        }
      System.out.println(star); // idx: 3 2 1 0 출력
    }
  }
}



4. 짚고 넘어가기!
- StringBuilder > 긴 문자열을 더하거나 뺄 때 사용
- 문자열 맨 뒤에 더하기: append()
- 문자열의 특정 위치 문자를 빼기: deleteCharAt()

- StringBuilder로 정의한 문자열의 길이 구하기: length()

728x90