본문 바로가기

백준 문제 풀이

백준 Triangulation

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

 

삼각형은 하나의 삼각형만 있으니 지름이 0, 사각형은 삼각형에 삼각형이 하나 더 붙으니 지름이 1이다.

항상 지름을 이루는 한쪽 끝에는 두 변을 포함하는 사각형이 있으며 이 사각형이 전체 도형을 두 부분으로 분할한다.

따라서 분할되는 두 부분의 크기가 비슷할수록 지름이 작아짐을 보일 수 있고 재귀함수로 빠르게 답을 구할 수 있다.

 

 

#pragma GCC optimize("Ofast")
#include <bits/stdc++.h>
using namespace std;

int sol(int n){
    if (n == 1) return 0;
    else if (!n) return -1;
    return sol((n - 1) / 2) + 2;
}

int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    
    int n;
    cin >> n;
    
    cout << sol(n - 2) << '\n';
}

'백준 문제 풀이' 카테고리의 다른 글

백준 1805번 나무수송  (2) 2024.10.16
백준 1168 요세푸스 문제 2  (2) 2024.10.11
백준 1517번 버블 소트  (0) 2024.10.11
백준 3397번 Division Expression  (0) 2024.10.11
백준 2813번 매력있는 울타리  (0) 2024.10.10