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

    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

    댓글