1. 문제
2. 접근 방법
DFS를 이용해서 모든 경우의 수를 고려해야합니다.
3. 코드
python
def cal(prev, n):
global max_ans, min_ans
if n == N:
max_ans = max(max_ans, prev)
min_ans = min(min_ans, prev)
return
if sign[0] > 0:
add = prev + numbers[n]
sign[0] -= 1
cal(add, n+1)
sign[0] += 1
if sign[1] > 0:
sub = prev - numbers[n]
sign[1] -= 1
cal(sub, n+1)
sign[1] += 1
if sign[2] > 0:
mul = prev * numbers[n]
sign[2] -= 1
cal(mul, n+1)
sign[2] += 1
if sign[3] > 0:
if prev >= 0:
div = prev // numbers[n]
else:
div = -((-prev) // numbers[n])
sign[3] -= 1
cal(div, n+1)
sign[3] += 1
N = int(input())
numbers = list(map(int, input().split()))
sign = list(map(int, input().split()))
max_ans, min_ans = -1e9, 1e9
cal(numbers[0], 1)
print(max_ans, min_ans, sep="\n")
4. 마치며
처음에 틀렸는데 ㅠ max_ans 초기값을 -1e9가 아니라 0으로 초기화해서 틀려버렸다
문제를 제대로 읽자 좀 ㅜ.ㅜ
'Algorithm > Python' 카테고리의 다른 글
[백준 14891] 톱니바퀴 (0) | 2021.04.18 |
---|---|
[백준 14889] 스타트와 링크 (0) | 2021.04.18 |
[백준 14503] 로봇 청소기 (0) | 2021.04.17 |
[백준 14502] 연구소 (0) | 2021.04.17 |
[백준 17136] 색종이 붙이기 (0) | 2021.04.17 |