Skip to content

Commit a482d02

Browse files
committed
[Silver II] Title: 도영이가 만든 맛있는 음식, Time: 88 ms, Memory: 109544 KB -BaekjoonHub
1 parent f1d3053 commit a482d02

File tree

2 files changed

+61
-0
lines changed

2 files changed

+61
-0
lines changed
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
# [Silver II] 도영이가 만든 맛있는 음식 - 2961
2+
3+
[문제 링크](https://www.acmicpc.net/problem/2961)
4+
5+
### 성능 요약
6+
7+
메모리: 109544 KB, 시간: 88 ms
8+
9+
### 분류
10+
11+
백트래킹, 비트마스킹, 브루트포스 알고리즘
12+
13+
### 제출 일자
14+
15+
2025년 3월 3일 12:49:24
16+
17+
### 문제 설명
18+
19+
<p>도영이는 짜파구리 요리사로 명성을 날렸었다. 이번에는 이전에 없었던 새로운 요리에 도전을 해보려고 한다.</p>
20+
21+
<p>지금 도영이의 앞에는 재료가 N개 있다. 도영이는 각 재료의 신맛 S와 쓴맛 B를 알고 있다. 여러 재료를 이용해서 요리할 때, 그 음식의 신맛은 사용한 재료의 신맛의 곱이고, 쓴맛은 합이다.</p>
22+
23+
<p>시거나 쓴 음식을 좋아하는 사람은 많지 않다. 도영이는 재료를 적절히 섞어서 요리의 신맛과 쓴맛의 차이를 작게 만들려고 한다. 또, 물을 요리라고 할 수는 없기 때문에, 재료는 적어도 하나 사용해야 한다.</p>
24+
25+
<p>재료의 신맛과 쓴맛이 주어졌을 때, 신맛과 쓴맛의 차이가 가장 작은 요리를 만드는 프로그램을 작성하시오.</p>
26+
27+
### 입력
28+
29+
<p>첫째 줄에 재료의 개수 N(1 ≤ N ≤ 10)이 주어진다. 다음 N개 줄에는 그 재료의 신맛과 쓴맛이 공백으로 구분되어 주어진다. 모든 재료를 사용해서 요리를 만들었을 때, 그 요리의 신맛과 쓴맛은 모두 1,000,000,000보다 작은 양의 정수이다.</p>
30+
31+
### 출력
32+
33+
<p>첫째 줄에 신맛과 쓴맛의 차이가 가장 작은 요리의 차이를 출력한다. </p>
34+
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import sys
2+
from itertools import combinations
3+
input = sys.stdin.readline
4+
5+
n = int(input())
6+
sour = []
7+
bitter = []
8+
for _ in range(n):
9+
a, b = map(int, input().split())
10+
sour.append(a)
11+
bitter.append(b)
12+
13+
diff = float('inf')
14+
15+
for i in range(1, n+1):
16+
idxs = list(combinations(list(range(n)), i))
17+
18+
for food in idxs:
19+
s = 1
20+
b = 0
21+
22+
for j in range(i):
23+
s *= sour[food[j]]
24+
b += bitter[food[j]]
25+
if abs(s-b) < diff:
26+
diff = abs(s-b)
27+
print(diff)

0 commit comments

Comments
 (0)