728x90
반응형
브루트포스 알고리즘 & 백트래킹 문제이다.
나누기 처리를 할 때 int(n1 / n2) 또는 -(-n1 / n2) 같은 방식으로 나눠야 하는데,
처음에 이걸 몰라서 계속 틀렸다.
def dfs(res, i, add, sub, mul, div):
global N
if i == N:
res_li.append(res)
else:
if add:
dfs(res + nums[i], i+1, add-1, sub, mul, div)
if sub:
dfs(res - nums[i], i+1, add, sub-1, mul, div)
if mul:
dfs(res * nums[i], i+1, add, sub, mul-1, div)
if div:
dfs(int(res / nums[i]), i+1, add, sub, mul, div-1)
N = int(input())
nums = list(map(int, input().split()))
add, sub, mul, div = map(int, input().split())
res_li = []
dfs(nums[0], 1, add, sub, mul, div)
print(max(res_li))
print(min(res_li))
728x90
반응형
'Agorithm > 백준 알고리즘' 카테고리의 다른 글
백준 알고리즘 16173번 점프왕 쩰리 (Small)(python) (0) | 2021.10.21 |
---|---|
백준 알고리즘 3182번 한동이는 공부가 하기 싫어!(python) (0) | 2021.08.10 |
백준 알고리즘 14562번 태권왕(python) (0) | 2021.06.15 |
백준 알고리즘 1326번 폴짝폴짝(python) (0) | 2021.06.15 |
백준 알고리즘 21867번 Java Bitecode(python) (0) | 2021.06.06 |