Algorithm/JUNGOL

[정올] 1523 : 별삼각형1

Gyuri 2022. 1. 20. 18:51

문제

삼각형의 높이 n과 종류 m을 입력 받은 후 다음과 같은 삼각형 형태로 출력하는 프로그램을 작성하시오.

 

입력형식

첫째 줄에 A 둘째 줄에 B 셋째 줄에 C가 주어진다.

A B C는 모두 100보다 같거나 크고 1 000보다 작은 자연수이다.삼각형의 크기 n(n의 범위는 100 이하의 자연수)과 종류 m(m은 1부터 3사이의 자연수)을 입력받는다.

출력형식

첫째 줄에는 A×B×C의 결과에 0 이 몇 번 쓰였는지 출력한다.

마찬가지로 둘째 줄부터 열 번째 줄까지 A×B×C의 결과에 1부터 9까지의 숫자가 각각 몇 번 쓰였는지 차례로 한 줄에 하나씩 출력한다.

위에서 언급한 3가지 종류를 입력에서 들어온 높이 n과 종류 m에 맞춰서 출력한다.

입력된 데이터가 주어진 범위를 벗어나면 "INPUT ERROR!"을 출력한다.

입력 예

3 2

출력 예

***
**
*

입력 예

200 3

출력 예

INPUT ERROR!
 

코드

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int n = sc.nextInt(); // 삼각형의 높이
        int m = sc.nextInt(); // 삼각형의 종류

        for (int i = 0; i < n; i++) { // 0 1 2 3 4
            if (n > 100 || m < 1 || m > 3) {
                System.out.println("INPUT ERROR!");
                break;
            }

            if (m == 1) {
                for (int j = 0; j < i + 1; j++) { // 1 2 3 4 5
                    System.out.print("*");
                }
                System.out.println();
            }

            if (m == 2) {
                for (int j = 0; j < n - i; j++) { // 5 4 3 2 1
                    System.out.print("*");
                }
                System.out.println();
            }

            if (m == 3) { // 1 3 5 7 9
                // 공백 4 3 2 1 0
                for (int j = 1; j < n - i; j++) { 
                    System.out.print(" ");
                }

                for (int k = 0; k < i * 2 + 1; k++) {
                    System.out.print("*");
                }
                System.out.println();
            }
        }
    }
}

▷ INPUT ERROR! 처리를 for문 가장 앞쪽에 해서 걸러준 이후, m=1,2,3인 경우의 코드를 수행해줘야함. 그렇지 않으면, 별이 출력된 후 오류 문구가 나올 수 있음