Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 후니의 쉽게 쓴 시스코 네트워킹
- CS
- BFS
- 에라토스테네스의 체
- 유니온 파인드
- 위상정렬
- 동적계획법
- java
- 투 포인터
- swea
- dfs
- JUnit 5
- Network
- 프로그래머스
- 이분탐색
- 그리디
- 백준
- 완전탐색
- 수학
- 알고리즘
- 문자열
- 백트래킹
- Effective Java
- 플로이드-와샬
- 세그먼트 트리
- mst
- Kotlin
- 스택
- 구현
- 시뮬레이션
Archives
반갑습니다!
[백준] 14888 연산자 끼워넣기 본문
풀이
단순한 백트래킹 문제이다. 연산자의 갯수에 맞춰서 백트래킹을 해주면 쉽게 해결할 수 있다.
코드
C++
#include <iostream>
#include <algorithm>
using namespace std;
#define MAX 10000000000
int n, min_ans = MAX, max_ans = -MAX;
int num[100];
int ops[4];
void dfs(int cnt, int result) {
if (cnt == n) {
min_ans = min(min_ans, result);
max_ans = max(max_ans, result);
return;
}
for (int i = 0; i < 4; i++) {
if (ops[i] > 0) {
ops[i]--;
if (i == 0) dfs(cnt + 1, result + num[cnt]);
if (i == 1) dfs(cnt + 1, result - num[cnt]);
if (i == 2) dfs(cnt + 1, result * num[cnt]);
if (i == 3) dfs(cnt + 1, result / num[cnt]);
ops[i]++;
}
}
}
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
cin >> n;
for (int i = 0; i < n; i++) cin >> num[i];
for (int i = 0; i < 4; i++) cin >> ops[i];
dfs(1, num[0]);
cout << max_ans << '\n' << min_ans << '\n';
return 0;
}
Python 3
import sys
n = int(sys.stdin.readline().rstrip())
nums = list(map(int, sys.stdin.readline().rstrip().split()))
ops = list(map(int, sys.stdin.readline().rstrip().split()))
min_answer = 1e9
max_answer = -1e9
def dfs(idx, result):
if idx == n:
global min_answer
global max_answer
min_answer = min(min_answer, result)
max_answer = max(max_answer, result)
return
for i in range(4):
if ops[i] > 0:
ops[i] -= 1
if i == 0: dfs(idx + 1, result + nums[idx])
elif i == 1: dfs(idx + 1, result - nums[idx])
elif i == 2: dfs(idx + 1, result * nums[idx])
else: dfs(idx + 1, int(result / nums[idx]))
ops[i] += 1
dfs(1, nums[0])
print(max_answer)
print(min_answer)
'알고리즘 문제 풀이' 카테고리의 다른 글
[SWEA] 2383 점심 식사시간 (0) | 2020.05.07 |
---|---|
[백준] 14889 스타트와 링크 (0) | 2020.05.06 |
[프로그래머스] 방금그곡 (0) | 2020.05.06 |
[백준] 2665 미로만들기 (0) | 2020.05.05 |
[프로그래머스] 파일명 정렬 (0) | 2020.05.04 |