본문 바로가기
Problem Solving/코드포스

[코드포스] 129A : Cookies

by shinbian11 2020. 8. 7.

https://codeforces.com/problemset/problem/129/A

 

Problem - 129A - Codeforces

 

codeforces.com


//C++

//C++
 
#include <bits/stdc++.h>
#define F_I ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define pi 3.1415926535
using namespace std;
typedef long long ll;
int arr[101];
int main() {
 
	F_I;
	
	ll n, sum = 0, even = 0, odd = 0;
	cin >> n;
	for (ll i = 0; i < n; i++)
	{
		cin >> arr[i];
		sum += arr[i];
		if (arr[i] % 2 == 0)
			even++;
		else
			odd++;
	}
	if (sum % 2 == 0)
		cout << even << '\n';
	else
		cout << odd << '\n';
}

> 가방을 하나만 가져간 뒤, 남은 쿠키들의 개수의 합이 짝수가 나올수 있는 경우의 수를 구하는 문제이다.

 

> 일단 n(가방의 개수)을 입력받는다. 그리고 각각의 가방에 쿠키의 개수를 입력받음과 동시에 쿠키들의 총 합(sum)도 같이 구한다. 또한 쿠키의 개수가 짝수개가 들어있는 가방의 수를 even으로 , 쿠키의 개수가 홀수개가 들어있는 가방의 수를 odd로 구해놓는다.

 

> 전체 합(sum)에서 아무 가방 1개에 들어있는 쿠키의 개수를 뺀 것이 짝수가 나와야 하는 것이다. 또한,

 

짝수 - 짝수 = 짝수

짝수 - 홀수 = 홀수

홀수 - 홀수 = 짝수

홀수 - 짝수 = 홀수

 

이므로,

sum이 짝수일 땐, 쿠키의 개수가 짝수 개인 가방을 빼면 되고(다시 말해, even의 수를 출력하면 되고),

sum이 홀수일 땐, 쿠키의 개수가 홀수 개인 가방을 빼면 된다(다시 말해, odd의 수를 출력하면 된다).

 

> 짝수와 홀수의 규칙성만 찾으면 금방 풀 수 있는 간단한 문제이다.