본문 바로가기

알고리즘

Boj 28325 c++ 호숫가의 개미굴

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