알고리즘
[Python] 백준 14888번 : 연산자 끼워넣기
ji_iin
2021. 9. 6. 14:27
문제
[ 문제 조건 ]
- 입력
- N : 수의 개수
- A1 ~ An : 수들
- sum(N-1) : 합이 N-1인 4개의 정수, 연산자 4개의 각각 개수가 주어짐 (+,-,×,÷) 순으로
- 출력
- 만들 수 있는 식의 최대 & 최소 값 출력
- -10억 ≤ 결과값 ≤ 10억
[ 해결순서 ]
- 백트래킹 유형은 dfs를 주로 사용하는 것 같아 dfs로 풀어보려고 했다.
- 모든 경우의 수를 전부 구해 최대 최소를 비교하는 문제여서 어쨌든 모두 비교해서 구해야한다.
- 처음 먼저 plus가 1이니까 dfs가 걸려 깊이우선탐색 후 나머지 연산까지 깊이우선탐색 해 값을 갱신
- 깊이우선탐색 plus 연산은 끝났고, 나머지 연산 중 multiply 값이 1이므로 해당 연산 기준으로 재귀적으로 dfs 진행 후
- 최대, 최소 갱신 후 최종 갱신된 값이 정답이 될 것이다.예제 2를 분석해서 구해봤다.
[ 점화식 ]
dfs(depth+1, result+values[depth], plus, minus, multiply, divide)
✏️한줄평
: 생각한 대로 코드 짜기는 어렵다ㅜㅜ