728x90
https://www.acmicpc.net/problem/14888
dfs(idx,val) : val 이 기존 값 , idx는 이제 더할 값의 인덱스
다음 dfs는 val에 idx인덱스의 값을 (더하거나 ,빼거나 곱하거나 나눠주고) idx를 1 증가시킨다.)
그래서 처음에 dfs(1, numbers[0]) 를 호출해주는 것이다.
numbers[0]을 가장 초기값으로 idx가 1인 값을 선택된 기호로 계산하여 val 에 저장하기 때문이다.
💻 코드 :
n = int(input())
numbers = list(map(int,input().split()))
oper = list(map(int,input().split()))
answer = []
def dfs(idx,val) :
if idx == len(numbers) :
answer.append(val)
return
for i in range(len(oper)) :
if oper[i] >= 1 :
# 사용했음을 알림
oper[i] -= 1
if i == 0:
dfs(idx+1 , val+numbers[idx])
elif i == 1 :
dfs(idx+1 , val-numbers[idx])
elif i == 2 :
dfs(idx+1 , val*numbers[idx])
else :
if numbers[idx]!= 0 :
if val <0 :
dfs(idx+1 , -(-val//numbers[idx]))
else :
dfs(idx+1 , val//numbers[idx])
# 다시 되돌려준다.
oper[i]+=1
dfs(1,numbers[0])
print(max(answer))
print(min(answer))
참고 블로그 :
https://hongcoding.tistory.com/119
복습 :
✅ 20220701
✅ 20220915
반응형
'알고리즘 > 백준 문제풀이' 카테고리의 다른 글
[삼성SW역량][Python/BOJ] 백준 14891 톱니바퀴(시뮬레이션) (0) | 2022.07.11 |
---|---|
[삼성SW역량][Python/BOJ] 백준 14889 스타트와 링크(DFS, 백트레킹) (0) | 2022.06.30 |
[삼성SW역량][Python/BOJ] 백준 14503 로봇 청소기(구현) (0) | 2022.06.30 |
[삼성SW역량][Python/BOJ] 백준 14502 연구소(DFS+BFS) (0) | 2022.06.30 |
[삼성SW역량][Python/BOJ] 백준 14501 퇴사(DFS) (0) | 2022.06.29 |