본문 바로가기

Algorithm/Math

(C++) - 백준(BOJ) 1703 : 생장점

반응형

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

 

1703번: 생장점

branchorama 나무는 특이한 규칙을 가지고 성장합니다. 어린 branchorama 초목은 하나의 잎을 꼭대기에 가진 가는 묘목이며, 그 잎에는 생장점이 있습니다. 성장하는 계절 동안 나무의 생장점들은 여

www.acmicpc.net

규칙을 찾는 문제였습니다.

 

📕 풀이방법

📔 입력 및 초기화

나무의 나이 age를 선언하고 level별 생장점, 가지친 나무의 수를 입력받을 vector v를 선언 후 적절히 입력해줍니다.

 

📔 풀이과정

 각 해마다 생장점과 가지치기의 수가 주어지므로 각 해에 대해 loop를 수행합니다. 1. 매 loop마다 현재 나뭇잎은 생장점만큼 늘어나므로 현재 나뭇잎 수 = 현재 나뭇잎 수 * 생장점 - 가지치기한 수 공식이 성립합니다. 이를 지역변수 leaves를 선언해 저장해줍니다. 2. 마지막 해의 나뭇잎 수를 갱신한 결과(leaves)를 출력해줍니다.


📕 Code

#include <bits/stdc++.h>
using namespace std;
int age;
vector <int> v;
int main(){
    while(1){
        cin >> age;
        if(!age) break;
        v.resize(age * 2);
        int leaves = 1;
        for(int i = 0; i < 2 * age; i++) cin >> v[i];
        for(int i = 0; i < age; i++) {
            int splitingFactor = v[i*2];
            int cut = v[i*2+1];
            leaves = leaves * splitingFactor - cut;
        }
        cout << leaves << '\n';
    }
}