๐๏ธ Algorithm/๐ฉ ๋ฐฑ์ค
๐ฉ [๋ฐฑ์ค] [Python] [Silver1] [์ผ์ฑ SW ์ญ๋ ํ ์คํธ ๊ธฐ์ถ ๋ฌธ์ ] 14888๋ฒ_์ฐ์ฐ์ ๋ผ์๋ฃ๊ธฐ
Dbswnstjd
2023. 2. 13. 02:19
๋ฌธ์
https://www.acmicpc.net/problem/14888
14888๋ฒ: ์ฐ์ฐ์ ๋ผ์๋ฃ๊ธฐ
์ฒซ์งธ ์ค์ ์์ ๊ฐ์ N(2 ≤ N ≤ 11)๊ฐ ์ฃผ์ด์ง๋ค. ๋์งธ ์ค์๋ A1, A2, ..., AN์ด ์ฃผ์ด์ง๋ค. (1 ≤ Ai ≤ 100) ์ ์งธ ์ค์๋ ํฉ์ด N-1์ธ 4๊ฐ์ ์ ์๊ฐ ์ฃผ์ด์ง๋๋ฐ, ์ฐจ๋ก๋๋ก ๋ง์ (+)์ ๊ฐ์, ๋บ์ (-)์ ๊ฐ์,
www.acmicpc.net
ํ์ด
# ๋ฐฑ์ค 14888๋ฒ ๋ฌธ์ - ์ฐ์ฐ์ ๋ผ์๋ฃ๊ธฐ
n = int(input())
number = list(map(int, input().split()))
add, sub, mul, div = map(int, input().split());
max_result = - int(1e9)
min_result = int(1e9)
def dfs(add, sub, mul, div, sum_value, idx):
global max_result, min_result
if idx == n:
max_result = max(max_result, sum_value)
min_result = min(min_result, sum_value)
return
if add:
dfs(add-1, sub, mul, div, sum_value + number[idx], idx + 1)
if sub:
dfs(add, sub-1, mul, div, sum_value - number[idx], idx + 1)
if mul:
dfs(add, sub, mul-1, div, sum_value * number[idx], idx + 1)
if div:
dfs(add, sub, mul, div-1, int(sum_value / number[idx]), idx + 1)
dfs(add, sub, mul, div, number[0], 1)
print(max_result)
print(min_result)
DFS ๋ฅผ ์ด์ฉํ ๋ฐฑํธ๋ํน ๋ฌธ์