Jakorithm
article thumbnail
728x90

문제

https://www.codetree.ai/training-field/search/problems/star-make-1?&utm_source=clipboard&utm_medium=text

 

코드트리 | 코딩테스트 준비를 위한 알고리즘 정석

국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요.

www.codetree.ai

 

 

숫자 두 개가 주어집니다.

첫번째 수는 별 모양의 크기이고, 두번째 수는 별 모양의 종류입니다.

종류는 1부터 3까지 총 3개가 있으며, 크기 5에 대한 각 종류의 모양은 다음과 같습니다. 포맷에 맞게 출력하는 프로그램을 작성해주세요.

  • 종류 1
*
**
***
****
*****
  • 종류 2
*****
****
***
**
*
  • 종류 3
    *
   ***
  *****
 *******
*********

 

입력 예시

5 3

 

출력 예시

    *
   ***
  *****
 *******
*********

 

 

코드

첫 번째 줄에 정수 n과 m이 공백으로 구분되어 주어진다.

  • 1 <= n <= 100
  • 1 <= m <= 3
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine(), " ");
        int n = Integer.parseInt(st.nextToken());
        int m = Integer.parseInt(st.nextToken());

        if (m == 1) {
            printStars1(n);
        } else if (m == 2) {
            printStars2(n);
        } else {
            printStars3(n);
        }
    }

    // 종류 1 별 찍기
    private static void printStars1(int n) {
        StringBuilder sb = new StringBuilder();

        for (int i = 0; i < n; i ++) {
            for (int j = 0; j < i + 1; j++) {
                sb.append("*");
            }
            sb.append("\n");
        }

        System.out.println(sb);
    }

    // 종류 2 별 찍기
    private static void printStars2(int n) {
        StringBuilder sb = new StringBuilder();

        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n - i; j++) {
                sb.append("*");
            }
            sb.append("\n");
        }

        System.out.println(sb);
    }

    // 종류 3 별 찍기
    private static void printStars3(int n) {
        StringBuilder sb = new StringBuilder();

        for (int i = 1; i <= n; i++) {
            int left = n - i; // 빈칸 길이
            int right = i * 2 - 1; // 별 길이

            for (int j = 0; j < left; j++) {
                sb.append(" ");
            }

            for (int j = 0; j < right; j++) {
                sb.append("*");
            }
            sb.append("\n");
        }

        System.out.println(sb);
    }
}

 

728x90