문제
A pyramid of blocks is constructed by first building a base layer of n blocks and then adding n-1 blocks to the next layer. This process is repeated until the top layer only has one block.
You must calculate the number of blocks needed to construct a pyramid given the size of the base. For example, a pyramid that has a base of size 4 will need a total of 10 blocks.
입력
The input will be a sequence of integers, one per line. The end of input will be signaled by the integer 0, and does not represent the base of a pyramid. All integers, other than the last (zero), are positive.
출력
For each positive integer print the total number of blocks needed to build the pyramid with the specified base.
풀이 과정
1. 1개 블럭부터 n 개 블럭까지 반복문을 사용하여 필요한 블럭의 총 개수를 구한다.
2. 가장 바닥 층에 n 개 블럭, 그 위로 n - 1 개 블럭, n - 2 개 블럭 .... 1개 블럭까지 필요하다면 필요한 블럭의 총 개수는 n*(n+1)/2 개 이다. ( 수열의 합 공식 )
0이 들어올 때 까지, n 에 대한 input 이 들어온다면 처리하고 0을 입력받으면 종료한다.
C - 1번 풀이
#include <stdio.h>
int main(void) {
while(1) {
int n;
scanf("%d", &n);
if (n == 0) break;
int sum = 0;
for (int i = 1; i <= n; i++) sum += i;
printf("%d\n", sum);
}
return 0;
}
C - 2번 풀이
#include <stdio.h>
int main(void) {
while(1) {
int n;
scanf("%d", &n);
if (n == 0) break;
printf("%d\n", n*(n+1)/2);
}
return 0;
}
Python - 1번 풀이
while True:
n = int(input())
if n == 0: break
sum = 0
for i in range(1, n+1): sum += i
print(sum)
Python - 2번 풀이
while True:
n = int(input())
if n == 0: break
print(n*(n+1)//2)
'-- 예전 기록 > BOJ' 카테고리의 다른 글
[ BOJ ] 20499 : Darius님 한타 안 함? ( BRONZE 4 ) / C, Python (0) | 2023.09.25 |
---|---|
[ BOJ ] 5532 : 방학 숙제 ( BRONZE 4 ) / C, Python (0) | 2023.09.25 |
[ BOJ ] 29751 : 삼각형 ( BRONZE 5 ) / C, Python (0) | 2023.09.24 |
[ BOJ ] 9086 : 문자열 ( BRONZE 5 ) / C, C++, Python, Java (0) | 2023.09.23 |
[ BOJ ] 2743 : 단어 길이 재기 ( BRONZE 5 ) / C, C++, Python, Java (0) | 2023.09.23 |