아즈텍 피라미드 (백준 7770)

코딩생활·2024년 1월 24일
0

백준문제풀이

목록 보기
192/308

안녕하세요. 오늘은 피라미드를 쌓을 거예요.

문제

https://www.acmicpc.net/problem/7770

아이디어

N층짜리 피라미드를 쌓으려면 1층부터 N층까지를 쌓아야합니다. 이때 1층은 가장 위에있는 하나짜리입니다.
i층을 쌓을때 필요한 블록의 수는 어떻게 될까요? 잘 생각해보면 4*(1부터 i-1까지의 합)+1이 됩니다. 그러므로 2xix(i-1)+1이 됩니다. i가 1부터 N까지 이 값의 합이 N층짜리 피라미드를 쌓을 때 필요한 블록의 수 입니다. 그러므로 i를 0부터 하나씩 늘려가면서 그 누적합이 입력값을 초과하는 순간 i-1을 출력해주면 됩니다.

소스코드

#include <iostream>
#define ll long long
using namespace std;

int main(void)
{
    ios_base::sync_with_stdio(false); cin.tie(NULL);
    ll N, i, sum = 0;
    cin >> N;
    for (i = 1;; i++)
    {
        sum += 2 * i * (i - 1) + 1;
        if (sum > N) break;
    }
    cout << i - 1; 
}


감사합니다.

0개의 댓글