forked from ndb796/python-for-coding-test
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy path5.py
42 lines (38 loc) Β· 1.17 KB
/
5.py
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
41
42
n = int(input())
# μ°μ°μ μννκ³ μ νλ μ 리μ€νΈ
data = list(map(int, input().split()))
# λνκΈ°, λΉΌκΈ°, κ³±νκΈ°, λλκΈ° μ°μ°μ κ°μ
add, sub, mul, div = map(int, input().split())
# μ΅μκ°κ³Ό μ΅λκ° μ΄κΈ°ν
min_value = 1e9
max_value = -1e9
# κΉμ΄ μ°μ νμ (DFS) λ©μλ
def dfs(i, now):
global min_value, max_value, add, sub, mul, div
# λͺ¨λ μ°μ°μλ₯Ό λ€ μ¬μ©ν κ²½μ°, μ΅μκ°κ³Ό μ΅λκ° μ
λ°μ΄νΈ
if i == n:
min_value = min(min_value, now)
max_value = max(max_value, now)
else:
# κ° μ°μ°μμ λνμ¬ μ¬κ·μ μΌλ‘ μν
if add > 0:
add -= 1
dfs(i + 1, now + data[i])
add += 1
if sub > 0:
sub -= 1
dfs(i + 1, now - data[i])
sub += 1
if mul > 0:
mul -= 1
dfs(i + 1, now * data[i])
mul += 1
if div > 0:
div -= 1
dfs(i + 1, int(now / data[i])) # λλ λλ λλ¨Έμ§λ₯Ό μ κ±°
div += 1
# DFS λ©μλ νΈμΆ
dfs(1, data[0])
# μ΅λκ°κ³Ό μ΅μκ° μ°¨λ‘λλ‘ μΆλ ₯
print(max_value)
print(min_value)