🔍 알고리즘/SWEA
[Python] SWEA 4008.숫자만들기 (모의SW테스트)
탄치
2022. 7. 13. 00:42
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWIeRZV6kBUDFAVH
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
https://nodingco.tistory.com/77
[Java] SWEA 4008.숫자만들기 (모의SW테스트)
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWIeRZV6kBUDFAVH SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy..
nodingco.tistory.com
Java코드와 풀이 접근방법은 위쪽 포스팅에서 확인해주세요.
class Operation:
def __init__(self, plus, minus, multiple, divide):
self._plus = plus
self._minus = minus
self._multiple = multiple
self._divide = divide
def dfs(value, count, operation):
global minValue
global maxValue
if(count == N):
minValue = min(minValue, value)
maxValue = max(maxValue, value)
return
if(operation._plus > 0):
operation._plus -= 1
dfs(value + number[count], count+1, operation)
operation._plus += 1
if(operation._minus > 0):
operation._minus -= 1
dfs(value - number[count], count+1, operation)
operation._minus += 1
if(operation._multiple > 0):
operation._multiple -= 1
dfs(value * number[count], count+1, operation)
operation._multiple += 1
if(operation._divide > 0):
operation._divide -= 1
dfs(int(value / number[count]), count+1, operation)
operation._divide += 1
def createOperation(tempOp):
operation = Operation(tempOp[0],tempOp[1],tempOp[2],tempOp[3])
return operation
T = int(input())
for test_case in range(1, T + 1):
minValue = 100_000_001
maxValue = -100_000_001
N = int(input())
operation = createOperation(list(map(int, input().split())))
number = list(map(int, input().split()))
dfs(number[0], 1, operation)
print("#{} {}".format(test_case, maxValue-minValue))
728x90