Posts 백준 3213 피자 c++
Post
Cancel

백준 3213 피자 c++

문제

https://www.acmicpc.net/problem/3213

문제해설

N명의 친구들이 피자를 먹는다.
친구들은 1/4, 1/2, 3/4 판을 먹을 수 있다.
다만 1/2을 먹는 친구 2명이서 한판을 나눠 먹을 수는 있지만
3/4를 먹는 2명과 1/2을 먹는 1명이 2판을 먹을 수는 없다.
1/2를 먹는 친구가 1/4와 1/4로 나눠서 먹을 수는 없다는 소리이다.
친구들이 최소 몇 판을 시켜야 다 먹을 수 있는지 구하면 된다.

문제풀이

문제 설명이 너무 불친절하게 나와있어서 힘들었다.
아무리 생각해봐도 일부러 이런식으로 난이도를 높인다고밖에 생각이 안든다.
아무튼 1/2끼리 짝지어서 개수를 ++해주고
그 다음은 1/4와 3/4을 짝지어서 개수를 세어줬다.
그리고 1/2와 1/4를 계산해주고
남은 3/4를 더해주고 나머지 애들도 더해주었다.

전체코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;

int main() {
	ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
	int n; cin >> n;
	vector<int>arr(3, 0);
	for (int i = 0; i < n; i++) {
		char a, b, c; cin >> a >> b >> c;
		if (a == '1') {
			if (c == '4')
				arr[0]++;
			else
				arr[1]++;
		}
		else
			arr[2]++;
	}
	int sum = arr[1] / 2;
	arr[1] -= sum * 2;

	int tmp = min(arr[0], arr[2]);
	arr[0] -= tmp; arr[2] -= tmp;
	sum += tmp;

	tmp = min(arr[0], arr[1]);
	arr[0] -= tmp; arr[1] -= tmp;
	sum += tmp;
	
	tmp = arr[0] / 4;
	sum += tmp;
	arr[0] -= tmp * 4;
	if (arr[0])
		sum++;
	sum += (arr[2] + arr[1]);
	cout << sum;
	return 0;
}

객체지향 설계의 5원칙 SOLID

백준 1027 고층 건물 c++

Comments powered by Disqus.