728x90
#15658번 연산자 끼워넣기 (2) 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
자꾸 복잡하게만 생각하는게 내 흠인 것 같다.
간결한 코드도 좋지만 조금은 편하게 쉽게 생각할 필요가 있다.
N = int(input())
nums = list(map(int, input().split()))
cals = list(map(int, input().split())) # +, -, *, /
maximum = -10**9
minimum = 10**9
def solve(idx, result):
global maximum, minimum
if idx == N:
maximum = max(maximum, result)
minimum = min(minimum, result)
return
if cals[0] > 0: # add
cals[0] -= 1
solve(idx+1, result+nums[idx])
cals[0] += 1
if cals[1] > 0: # sub
cals[1] -= 1
solve(idx+1, result-nums[idx])
cals[1] += 1
if cals[2] > 0: # mulitple
cals[2] -= 1
solve(idx+1, result*nums[idx])
cals[2] += 1
if cals[3] > 0: # devide
cals[3] -= 1
solve(idx+1, int(result/nums[idx]))
cals[3] += 1
solve(1, nums[0])
print(maximum)
print(minimum)
재귀 호출을 하고 난 뒤, 리스트의 자료들을 원 상태로 복구시키는 작업을 잊지말자.
'Algorithm > acmicpc.net' 카테고리의 다른 글
아깝...! (골드 4) (0) | 2022.02.14 |
---|---|
아니.. 난 아직 멍청하다 (dfs) (0) | 2022.02.13 |
뇌가 돌아오는중 (그리디, 브루트포스) (0) | 2022.02.13 |
난생 처음 풀어본 골드2 (뚝배기 깨짐) (0) | 2022.02.06 |
처음 구해본 트리의 지름 (골드3을 이해하기 시작하는 중) (0) | 2022.02.06 |