[C++][백준 30923] 크냑과 3D 프린터

PublicMinsu·2025년 8월 25일

문제

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

접근 방법

h에 영향을 받는 면의 넓이가 어떤 형식으로 결정되는지를 고민하면 됩니다.

코드

#include <iostream>
using namespace std;

int N, prevH, h;
long long area;

int main()
{
    ios::sync_with_stdio(0), cin.tie(0);
    cin >> N;

    for (int i = 0; i < N; ++i)
    {
        cin >> h;

        area += abs(h - prevH);
        area += h * 2;
        area += 2;

        prevH = h;
    }

    area += prevH;

    cout << area;
    return 0;
}

풀이

모든 막대에 대해서 윗면과 아랫면은 1씩 사용합니다.
다른 면과 맞닿지 않은 면의 경우 h만큼 사용합니다.
다른 면과 맞닿은 면은 이전 높이만큼 가려지므로 현재 높이에서 이전 높이를 뺀 값의 절댓값만큼 사용됩니다.

profile
연락 : publicminsu@naver.com

0개의 댓글