문제
N과 시작 숫자 S가 주어지면 숫자 피라미드를 만드는 프로그램을 작성하시오.
예를 들어, N이 5이고 S가 3 이라면, 그 숫자 피라미드는 다음과 같다.
- 시작 숫자 S는 꼭대기부터 1씩 증가한다.
- 시작 행의 번호가 1번이라고 했을때, 짝수번째 행은 왼쪽에서 오른쪽으로 1씩 증가하도록 적고, 홀수번째 행은 거꾸로 적는다.
- 숫자가 만약 10이 될 경우, 1로 바꾸고 다시 증가한다.
입력
입력의 첫 번째 줄에 N과 시작 숫자 S가 주어진다. ( 1≤N≤100, 1 ≤S≤ 9)
출력
첫 번째 줄부터 숫자 피라미드를 출력한다. (각 줄에 존재하는 공백의 개수와 숫자의 개수를 정확하게 확인해주시바랍니다.)
예제 입력
예제 출력
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int top =sc.nextInt();
int fsu = sc.nextInt();
int space =top-1;
int oddBefore = 0;
int evenBefore = 0;
int oddfirst = 0;
int floor = 0;
for(int i=1;i<=top;i++){
//공백 층수 -1개부터 하나씰 줄면서 공백
for(int k=0;k<space;k++){
System.out.print(" ");
}
space--;
// 층 수 저장
floor =i;
if(i%2==0){//짝수층이면 증가
//시작은 이전층의 +1
//짝수층의 숫자 갯수는 2*층수-1
for(int j=0;j<2*floor-1;j++){// 짝수층 출력
oddBefore++;
// 10 이상일 경우 1로 회귀
if(oddBefore>=10){
oddBefore =1;
}
System.out.print(oddBefore);
}
// 짝수층 마지막 저장
evenBefore = oddBefore;
}else{// 홀수층 이면 감소
if(i==1){ // 첫번쨰 층은 받아온 두번째 수
oddfirst = fsu;
// 짝수층을 위해 전 홀수층 시작수 저장
oddBefore =oddfirst;
}else{ // 두번쩨 홀수층은 짝수층 마지막수로 로직처리
// 짝수층 마지막 수에 2*홀수층+1하면 홀수층 시작 수
for(int j=0;j<2*floor-1;j++){
evenBefore++;
// 10 이상일 경우 1로 회귀
if(evenBefore>=10){
evenBefore =1;
}
}
// 홀수층 시작수 저장
oddfirst = evenBefore;
//짝수층을 위해 전 홀수층 시작수 저장
oddBefore =oddfirst;
}
//홀수층의 숫자 갯수는 2*층수-1
for(int j=0;j<2*floor-1;j++){// 홀수층 출력
System.out.print(oddfirst );
oddfirst--;
// 0이면 1로 회귀
if(oddfirst<=0){
oddfirst =9;
}
}
}
// 출력 한층 끝나면 줄바꿈
System.out.println();
}
}
}