[AtCoder] Batters
2022. 6. 30. 02:05ㆍTIL💡/Algorithms
https://atcoder.jp/contests/abc256/tasks/abc256_b
시간 제한이 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 |