https://www.acmicpc.net/problem/28325
우선 쪽방이 있는 곳에 개미를 모두 넣는다고 가정한다.
그리고 양쪽 끝에 빈 방이 있는 경우에는 배열을 원형으로 생각한뒤, 0을 한쪽으로 몰아준다. 쪽방이 한 개도 없는 경우에는 예외 처리를 해준다.

#include<iostream>
typedef long long ll;
#define Max 250000
using namespace std;
ll a[Max*2+1];
ll ans, start, sum;
int main(){
int n; cin>>n;
for(int i=0; i<n; i++){
cin>>a[i];
sum+=a[i];
}
if(!sum){
if(n%2==0){
cout<<n/2;
} else{
cout<<(n-1)/2;
} return 0;
}
if(!a[0]&&!a[n-1]){
for(int i=0; i<n; i++){
if(!a[i]){
start++;
a[n+i]=a[i];
} else{
break;
}
}
for(int i=start; i<n+start; i++){
int j=i, len=0;
if(!a[i]){
while(j<n+start&&!a[j]){
len++; j++;
} sum+=(len+1)/2;
i=j;
}
}
} else {
for(int i=0; i<n; i++){
int j=i, len=0;
if(!a[i]){
while(j<n&&!a[j]){
len++; j++;
} sum+=(len+1)/2;
i=j;
}
}
} cout<<sum;
}'알고리즘' 카테고리의 다른 글
| Boj 7571 c++ 점 모으기 (0) | 2025.07.20 |
|---|---|
| Boj 32069 c++ 가로등 (1) | 2025.07.20 |
| Boj 1912 c++ 연속합 (0) | 2025.07.19 |
| Boj 11404 c++ 플로이드 워셜 (1) | 2025.07.17 |
| Boj 9251 c++ LCS (0) | 2025.07.16 |