DY N DY

실력키우기 별삼각형3(JAVA) 본문

PARK/ALGORITHM

실력키우기 별삼각형3(JAVA)

손세지 2016. 5. 11. 09:40

1329 : 별삼각형3

제한시간: 1Sec    메모리제한: 32mb
해결횟수: 459회    시도횟수: 948회   



삼각형의 높이 N을 입력받아 아래와 같은 모양을 출력하는 프로그램을 작성하시오.


e3050b66a1b29a01767400d7560a4131_1449726 

 

삼각형의 높이 N(N의 범위는 100 이하의 양의 홀수)을 입력받는다.



N의 높이에 맞추어 주어진 형태의 모양을 출력한다. 입력된 데이터가 주어진 범위를 벗어나면 "INPUT ERROR!"를 출력한다.


 [Copy]
7
 [Copy]
*
 ***
  *****
   *******
  *****
 ***
*


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
/**************************************************************
    Problem: 1329
    User: a132034
    Language: Java
    Result: Success
    Time:212 ms
    Memory:9968 kb
****************************************************************/
 
 
import java.util.Scanner;
 
class Main{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        //홀수 N을 입력받음.
        int N = sc.nextInt();
         
        if(N % 2 == 0 || N > 100 || N < 1){
            System.out.println("INPUT ERROR!");
            return;
        }
        for(int i = 0 ; i < N/2+1; ++i)
        {
            for(int j = 0; j < i; ++j)
                System.out.print(" ");
            for(int j = 0 ; j < 2*i+1; ++j)
                System.out.print("*");
            System.out.println();
        }
        for(int i = N/2-1; i >= 0; --i)
        {
            for(int j = 0; j < i; ++j)
                System.out.print(" ");
            for(int j = 0 ; j < 2*i+1; ++j)
                System.out.print("*");
            System.out.println();
        }
    }
}


이번 문제는 상당히 간단했다. 

우선 홀수가 들어온다고 하였으므로 홀수가 아니거나 범위를 벗어나는 입력은 처리를 하였다. 

홀수가 들어온다면 당연히 

1~N 까지는 홀수 이므로 별이 늘어나는 구간과 줄어드는 구간으로 나눌 수 있었다. 


" " 와 * 을 찍는 것은 눈으로 봐도 보일 정도로 규칙이 어렵지 않았다. 

" "는 1개씩 증가하였고 *는 2개씩(홀수개로) 증가하였다.