CS/알고리즘_문제풀이(자바)

숫자 피라미드

Jedy_Kim 2021. 8. 25. 15:19
728x90

문제

N과 시작 숫자 S가 주어지면 숫자 피라미드를 만드는 프로그램을 작성하시오.
예를 들어, N이 5이고 S가 3 이라면, 그 숫자 피라미드는 다음과 같다.

copy

3 456 21987 3456789 987654321

  • 시작 숫자 S는 꼭대기부터 1씩 증가한다.
  • 시작 행의 번호가 1번이라고 했을때, 짝수번째 행은 왼쪽에서 오른쪽으로 1씩 증가하도록 적고, 홀수번째 행은 거꾸로 적는다.
  • 숫자가 만약 10이 될 경우, 1로 바꾸고 다시 증가한다.  

입력

입력의 첫 번째 줄에 N과 시작 숫자 S가 주어진다. ( 1≤N≤100, 1 ≤S≤ 9)

 

출력

첫 번째 줄부터 숫자 피라미드를 출력한다. (각 줄에 존재하는 공백의 개수와 숫자의 개수를 정확하게 확인해주시바랍니다.)

 

예제 입력

5 3

예제 출력

    3
   456
  21987
 3456789
987654321

 

#코드

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
41
42
43
44
45
46
47
import java.util.*;
import java.io.*;
 
public class Main{
    public static void main(String[] args) throws Exception {
 
      // Please Enter Your Code Here
      BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
      StringTokenizer st = new StringTokenizer(br.readLine());
       
      int N = Integer.parseInt(st.nextToken());
      int S = Integer.parseInt(st.nextToken());
       
      int maxLen = 2*- 1;
      int mid    = (maxLen/2+ (maxLen%2); 
       
      for(int i = 1; i <= N; i++) {
        String resStr = "";
        int curPoint  = 2*- 1;
        int spaceVal  = (maxLen - curPoint) / 2
          
        // 공백
        for(int j = 0; j < spaceVal; j++) {
          resStr += " ";
        }
        // 숫자 채우기
        String tempNum = "";
        for(int j = 0; j < curPoint; j++) {
          tempNum += S;
          S += 1;
          if(S > 9) {
            S = 1;
          }
        }
         
        if(i%2 != 0) { // 홀수
          String reverse = "";
          for(int k = tempNum.length() - 1; k >= 0; k--) {
            reverse += tempNum.charAt(k);
          }
          tempNum = reverse;
        }  
        System.out.println(resStr+tempNum); 
      } 
 
    }
}
cs

 

반응형

'CS > 알고리즘_문제풀이(자바)' 카테고리의 다른 글

array 2  (0) 2021.08.26
array 1  (0) 2021.08.26
주사위 게임  (0) 2021.08.25
Card game  (0) 2021.08.25
점수 계산  (0) 2021.08.25