PS

BOJ 31233 : 관광 상품

lickelon 2024. 5. 14. 22:34
  • 문제 링크 : boj.kr/31233
  • 난이도 : G2
  • 태그 : 애드혹

코드

#include <bits/stdc++.h>

#define all(x) (x).begin(), (x).end()

#define INF 0x7FFFFFFF

using namespace std;

using ll = long long;
using ld = long double;
using pii = pair<int,int>;
using pll = pair<ll, ll>;

int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0); cout.tie(0);

    int n;
    cin >> n;
    vector<int> arr(n);
    for(auto &u : arr) cin >> u;

    int ans = min(arr[0], arr[1]);
    for(int i = 2; i < n; i++) {
        int m = min(arr[i], arr[i-1]);
        ans = max(ans, m);
        if(m == arr[i]) ans = max(ans, min(arr[i-1], arr[i-2]));
        else ans = max(ans, min(arr[i], arr[i-2]));
    }
    cout << ans;

    return 0;
}

풀이

$K \geq 4$라면 $K \leq 3$인 조합으로 쪼갤 수 있다. 또한 $K \geq 4$에서 최적이라면 그것을 쪼갠 조합에서도 최적인 경우가 발생한다. 따라서 $K \leq 3$인 경우를 완전탐색으로 구해주면 답을 구할 수 있다.

'PS' 카테고리의 다른 글

BOJ 23255 : 구름다리 2  (0) 2024.05.16
BOJ 2616 : 소형기관차  (1) 2024.05.15
BOJ 17073 : 나무 위의 빗물  (0) 2024.05.13
BOJ 28067 : 기하가 너무 좋아  (0) 2024.05.12
BOJ 2467 : 용액  (0) 2024.05.11