코딩항해기
[과제/코드업/JAVA] 1362 : 숫자 피라미드 3 본문
[문제]
길이 n이 입력되면 다음과 같은 숫자 피라미드를 출력한다.
예) n이 5이면
15
14 13
12 11 10
9 8 7 6
5 4 3 2 1
[디버깅표]
입력값이 짝수라면 +1 아니라면 하지 않음
i | i<5 | j | ??? j <=i | j출력값 | |
0 | T | 0 | T | 15 | 피라미드 상위값-- |
1 | F | ||||
1 | T | 0 | T | 14 | |
1 | T | 13 | |||
2 | F | ||||
2 | T | 0 | T | 12 | |
1 | T | 11 | |||
2 | T | 10 | |||
3 | F | ||||
3 | T | 0 | T | 9 | |
1 | T | 8 | |||
2 | T | 7 | |||
3 | T | 6 | |||
4 | F | ||||
4 | T | 0 | T | 5 | |
1 | T | 4 | |||
2 | T | 3 | |||
3 | T | 2 | |||
4 | T | 1 | |||
5 | F | ||||
5 | F |
[코드]
package home0629;
import java.util.Scanner;
//길이 n이 입력되면 다음과 같은 숫자 피라미드를 출력한다.
//
//예) n이 5이면
//
//15
//14 13
//12 11 10
//9 8 7 6
//5 4 3 2 1
public class Homework01 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("입력한 숫자로 숫자 피라미드를 만드는 프로그램입니다.");
int num; //입력값
int result; //피라미드 꼭대기 값
int cum = 0; //i누적값
while(true) {
System.out.print("정수 입력 >> ");
num = sc.nextInt();
if(num > 0) {
break;
}
System.out.println("음수는 불가능합니다.");
}
//만약 짝수라면 *3연산에 +1 아니라면 *3연산만
result = num*(num+1)/2;
for(int i=0;i<num;i++) {
cum += i;
for(int j=0;j<=i;j++) {
System.out.print(result+"\t");
result--;
}
System.out.println();
}
}
}
반복문 조건은 쉽게 찾았지만 출력에 들어갈 숫자 구하는게 오래 걸렸는데..
찾아보니 생각보다 간단한 방식이라 너무 어렵게 생각하지 않을 필요가 있을 것 같다....
'problem solving > 과제&실습 코딩' 카테고리의 다른 글
[실습/JAVA] 학생으로 클래스 연습하기 (+풀이 0701) (0) | 2024.07.01 |
---|---|
[과제/JAVA] 학생부 프로그램 함수화 (+풀이 0701) (1) | 2024.06.30 |
[과제/코드업/JAVA] 1360 : 숫자 피라미드 2 (0) | 2024.06.28 |
[과제/JAVA] 별찍기 추가 (0) | 2024.06.28 |
[실습/JAVA] 출석부 프로그램 만들기 (+풀이 0628) (0) | 2024.06.27 |