[AtCoder] Batters

2022. 6. 30. 02:05TIL💡/Algorithms

https://atcoder.jp/contests/abc256/tasks/abc256_b

 

B - Batters

AtCoder is a programming contest site for anyone from beginners to experts. We hold weekly programming contests online.

atcoder.jp

시간 제한이 2초라서 사실 딱히 별다른 알고리즘을 풀지 않고 그냥 구현해도 무방하다.

그래도 그러면 재미없으니까 최대한 효율적으로 풀어보려 노력했다. 누적합(Prefix Sum)을 사용하면 시간복잡도 $O(N)$를 사용해 매 piece마다 마지막 위치를 예상할 수 있다.

#include <iostream>

using namespace std;
int arr[100];
int suffix_sum[100];

int main() {
    int n;
    cin >> n;
    for(int i = n - 1;i >= 0;i--){
        cin >> arr[i];
    }
    
    suffix_sum[0] = arr[0];
    int flag = n;
    // 🚨아예 처음부터 벗어나는 경우도 고려!
    if(suffix_sum[0] >= 4) {
        cout << n << '\n';
        return 0;
    }
    for(int i = 1;i < n;i++) {
        suffix_sum[i] = suffix_sum[i - 1] + arr[i];
        if(suffix_sum[i] >= 4) {
            flag = i;
            break;
        }
    }
    
    cout << n - flag << '\n';
}

'TIL💡 > Algorithms' 카테고리의 다른 글

[중급 알고리즘] Union-Find, Heap, BST  (0) 2022.07.02
[AtCoder] Filling 3x3 array  (0) 2022.06.30
[백준] 2240: 자두나무  (0) 2022.06.30
[중급 알고리즘] 스택  (0) 2022.06.24
[중급 알고리즘] Brute Force 확장3  (0) 2022.06.19