DY N DY

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

PARK/ALGORITHM

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

손세지 2016. 3. 31. 13:33

1719 : 별삼각형2

제한시간: 1Sec    메모리제한: 64mb
해결횟수: 737회    시도횟수: 1966회   



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


e3050b66a1b29a01767400d7560a4131_1449726
 

 

삼각형의 크기 n(n의 범위는 100 이하의 홀수)과 종류 m(m은 1부터 4사이의 정수)을 입력받는다.



위에서 언급된 4가지 종류를 입력에서 들어온 높이 n과 종류 m에 맞춰서 출력한다.
입력된 데이터가 주어진 범위를 벗어나면 "INPUT ERROR!"을 출력한다. '*'과 '*' 사이에는 공백이 없다.


 [Copy]
5 1
 [Copy]
*
**
***
**
*



 [Copy]
7 4
 [Copy]
****
 ***
  **
   *
   **
   ***
   ****
  1. /**************************************************************
  2.     Problem: 1719
  3.     User: a132034
  4.     Language: Java
  5.     Result: Success
  6.     Time:188 ms
  7.     Memory:9140 kb
  8. ****************************************************************/
  9.  
  10.  
  11. import java.util.Scanner;
  12.  
  13. public class Main {
  14.  
  15.  @SuppressWarnings("resource")
  16.  public static void main(String[] args) {
  17.   int n;
  18.   int m;
  19.   Scanner sc = new Scanner(System.in);
  20.   n = sc.nextInt();
  21.   m = sc.nextInt();
  22.    
  23.   if(> 100 || n < 1 || n % 2 == 0)
  24.   {
  25.    System.out.println("INPUT ERROR!");
  26.    return;
  27.   }
  28.    
  29.   if(== 1)
  30.   {
  31.    for(int i = 0 ; i < n/2+1; ++i)
  32.    {
  33.     for(int j = 0 ; j < i+1; ++j)
  34.     {
  35.      System.out.print("*");
  36.     }
  37.     System.out.println();
  38.    }
  39.    for(int i = 0; i< n/2; ++i)
  40.    {
  41.     for(int j = n/2-1-i; j >= 0; --j)
  42.     {
  43.      System.out.print("*");
  44.     }
  45.     System.out.println();
  46.    }
  47.      
  48.   }
  49.   else if(== 2)
  50.   {
  51.    for(int i = 0 ; i < n/2+1; ++i)
  52.    {
  53.     for(int j = i; j <n/2; ++j)
  54.     {
  55.      System.out.print(" ");
  56.     }
  57.     for(int j = 0 ; j < i+1; ++j)
  58.     {
  59.      System.out.print("*");
  60.     }
  61.     System.out.println();
  62.    }
  63.    for(int i = 0; i< n/2; ++i)
  64.    {
  65.     for(int j = 0; j <= i ; ++j)
  66.     {
  67.      System.out.print(" ");
  68.     }
  69.     for(int j = n/2-1-i; j >= 0; --j)
  70.     {
  71.      System.out.print("*");
  72.     }
  73.     System.out.println();
  74.    }
  75.   }
  76.   else if(== 3)
  77.   {
  78.    for(int i = 0 ; i < n/2+1; ++i)
  79.    {
  80.     for(int j = 0 ; j < i; ++j)
  81.     {
  82.      System.out.print(" ");
  83.     }
  84.     for(int j = n ; j > i*2 ; --j)
  85.     {
  86.      System.out.print("*");
  87.     }
  88.     System.out.println();
  89.    }
  90.    for(int i = 0 ; i < n/2; ++i)
  91.    {
  92.     for(int j = n/2-1 ; j > i; --j)
  93.     {
  94.      System.out.print(" ");
  95.     }
  96.     for(int j = 0 ; j < 2*(i+1)+1; ++j)
  97.     {
  98.      System.out.print("*");
  99.     }
  100.     System.out.println();
  101.    }
  102.   }
  103.   else if(== 4)
  104.   {
  105.    for(int i = 0 ; i < n/2+1; ++i)
  106.    {
  107.     for(int j = 0 ; j < i; ++j)
  108.     {
  109.      System.out.print(" ");
  110.     }
  111.     for(int j = 0 ; j < n/2+1-; ++j)
  112.     {
  113.      System.out.print("*");
  114.     }
  115.     System.out.println();
  116.    }
  117.    for(int i = 0 ; i < n/2; ++i)
  118.    {
  119.     for(int j = 0 ; j < n/2; ++j)
  120.     {
  121.      System.out.print(" ");
  122.     }
  123.     for(int j = 0 ; j < i+2; ++j)
  124.     {
  125.      System.out.print("*");
  126.     }
  127.     System.out.println();
  128.    }
  129.   }
  130.   else
  131.   {
  132.    System.out.println("INPUT ERROR!");
  133.    return;
  134.   }
  135.  }
  136. }



별삼각형 1 보단 복잡해보이지만 결국 비슷한 for문 활용 문제.

다양한 방법으로 풀리며 보통 풀 때마다 조금씩 다른 풀이가 나온다. 


'PARK > ALGORITHM' 카테고리의 다른 글

실력키우기 팩토리얼(C++)  (0) 2016.04.02
실력키우기 10진수를 2진수로(JAVA)  (1) 2016.04.01
문제은행(BFS) 장기(JAVA)  (0) 2016.03.30
실력키우기 별삼각형1(JAVA)  (0) 2016.03.30
실력키우기 구구단2 (JAVA)  (0) 2016.03.29