반응형

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

 

16987번: 계란으로 계란치기

원래 프로그래머의 기본 소양은 팔굽혀펴기를 단 한 개도 할 수 없는 것이라고 하지만 인범이는 3대 500을 넘기는 몇 안되는 프로그래머 중 한 명이다. 인범이는 BOJ에서 틀린 제출을 할 때마다 턱

www.acmicpc.net

 

 

왼쪽 계란부터 아직 안깨진 계란과 부딪치게 하면서 최대로 깨뜨릴 수 있는 계란의 수를 구해주었습니다.

#include <iostream>
#include <algorithm>
#define MAX 8
using namespace std;

int n, s[MAX], w[MAX], ans = 0;

void breakEggs(int idx, int cnt) {
	ans = max(ans, cnt);
	if (idx == n) return;
	if (s[idx] <= 0) breakEggs(idx + 1, cnt);
	else {
		for (int i = 0; i < n; i++) {
			if (s[i] <= 0 || idx == i) continue;
			s[idx] -= w[i];
			s[i] -= w[idx];
			breakEggs(idx + 1, cnt + (s[idx] <= 0) + (s[i] <= 0));
			s[i] += w[idx];
			s[idx] += w[i];
		}
	}
}

int main() {
	ios::sync_with_stdio(false);
	cin.tie(NULL); cout.tie(NULL);

	cin >> n;
	for (int i = 0; i < n; i++) {
		cin >> s[i] >> w[i];
	}

	breakEggs(0, 0);
	cout << ans;
}
반응형

'Algorithm' 카테고리의 다른 글

백준 15942 : Thinking Heap  (0) 2022.02.12
LeetCode 128 : Longest Consecutive Sequence  (0) 2022.02.06
백준 1722 : 순열의 순서  (0) 2022.02.02
백준 2166 : 다각형의 면적  (0) 2022.01.31
백준 16968 : 차량 번호판 1  (0) 2022.01.30

+ Recent posts