본문 바로가기

codeforce/#618 (Div.2)

Codeforces #618 (Div. 2) A. Non-zero

a[1]부터 a[n]까지 n개의 수를 입력받는다. ai = ai + 1 을 수행할 수 있고, a[1] + a[2]+ ... + a[n]  이 0 이 아니고 a[1]*a[2]*...a[n] 이 0이 아니게 되도록하는 최소 +1의 회수를 출력하는 문제이다.

a[i]가 0이 되면 안되므로, a[i]가 0이면 +1을 해준다. 그리고 총합이 0이된다면, 양수인 a[i]에 +1을 해주면 문제의 조건에 만족하는 수열을 만들 수 있다.

#include <iostream>

using namespace std;

int main(){
    int t, n;
    cin >> t ;
    while (t-- ){
        cin >> n;
        int a[110];
        int addCnt = 0;
        int sum = 0;
        for (int i = 0; i < n; i ++){
            cin >> a[i];
            if(a[i] == 0) {
                a[i] ++;
                addCnt ++;
            }
            sum += a[i];
        }
        if(sum == 0){
            addCnt ++;
        }
        cout << addCnt << endl;
    }
    return 0;
}
반응형

'codeforce > #618 (Div.2)' 카테고리의 다른 글

Codeforces #618 (Div. 2) B. Assigning to Classes  (0) 2020.02.16