250x250
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 |
Tags
- 연관관계
- FetchType
- dfs
- exclusive lock
- 백트래킹
- 스프링 폼
- querydsl
- CHECK OPTION
- fetch
- shared lock
- 낙관적락
- 데코레이터
- 일대다
- 유니크제약조건
- PS
- eager
- 힙
- 스토어드 프로시저
- execute
- 지연로딩
- SQL프로그래밍
- 다대일
- JPQL
- 다대다
- BOJ
- 이진탐색
- 동적sql
- 즉시로딩
- 연결리스트
- 비관적락
Archives
- Today
- Total
흰 스타렉스에서 내가 내리지
[BOJ] (DFS) 15658번 연산자 끼워넣기 (2) 본문
728x90
permutation을 이용해 brute force로 처음에 접근을 했는데, 시간초과가 났다.
dfs로 풀면 시간초과를 피할 수 있다.
n = int(input())
arr = list(map(int, input().split()))
oper = list(map(int, input().split()))
maxval, minval = -1e9, 1e9
def solve(index, val, add, sub, mul, div):
global maxval, minval
if index == n:
maxval = max(maxval, val)
minval = min(minval, val)
return
if add:
solve(index+1, val+arr[index], add-1, sub, mul, div)
if sub:
solve(index+1, val-arr[index], add, sub-1, mul, div)
if mul:
solve(index+1, val*arr[index], add, sub, mul-1, div)
if div:
solve(index+1, int(val/arr[index]), add, sub, mul, div-1)
solve(1, arr[0], *oper)
print(maxval)
print(minval)
https://www.acmicpc.net/problem/15658
15658번: 연산자 끼워넣기 (2)
첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1보다 크거나 같고, 4N보다 작거나 같은 4개의 정수가 주어지는데, 차례대
www.acmicpc.net
'Problem Solving' 카테고리의 다른 글
[BOJ] (DP) 2156번 포도주 시식 (0) | 2022.03.06 |
---|---|
[BOJ] (DP, BFS) 13549번 숨바꼭질3 ?? (0) | 2022.03.02 |
[BOJ] (BFS)7576번 토마토 (0) | 2022.02.25 |
[BOJ] (GRAPH) 1707번 이분 그래프 (0) | 2022.02.19 |
[BOJ] (DP) 1149번 RGB거리 (0) | 2022.02.17 |