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*N - 1;
int mid = (maxLen/2) + (maxLen%2);
for(int i = 1; i <= N; i++) {
String resStr = "";
int curPoint = 2*i - 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 |
반응형