N, S, M = map(int,input().split())
vols = list(map(int,input().split()))
sounds = list()
sounds.append(-1)
def vol_control(now,volumns, start, M):
if now !=N-1:
if start + volumns[now] <= M:
vol_control(now+1, volumns, start + volumns[now], M)
if start - volumns[now] >= 0:
vol_control(now+1, volumns, start - volumns[now],M)
else:
if start + volumns[now] <= M:
sounds.append(start + volumns[now])
if start - volumns[now] >= 0:
sounds.append(start - volumns[now])
vol_control(0,vols,S,M)
print(max(sounds))
위 문제를 위와같은 공식으로 풀었지만 메모리 초과 오류가 난다.
n, s, m = map(int, input().split())
array = list(map(int, input().split()))
dp = [[0]*(m+1) for _ in range(n+1)]
dp[0][s] = 1
for i in range(1, n+1):
for j in range(0, m+1):
if dp[i-1][j] != 0:
if j + array[i-1] <= m:
dp[i][j+array[i-1]] = 1
if j - array[i-1] >= 0:
dp[i][j-array[i-1]] = 1
result = -1
for i in range(m, -1, -1):
if dp[n][i] == 1:
result = i
break
print(result)
errorMessage: PRIMARY KEY 제약 조건 'WM_INSPECTIONRESULTHISTORY_PK'을(를) 위반했습니다. 개체 'dbo.WM_INSPECTIONRESULTHISTORY'에 중복 키를 삽입할 수 없습니다. 중복 값은 ~~ 입니다.
확인해보니
히스토리 테이블에 값을 넣을 때는 모든 경우에 새로운 키를 발생시켜 값을 할당하고 있다
다른 곳에 문제가 있어 보인다.
HISTORYKEY 에 currentEntity1.LASTHISTORYKEY 값을 받도록 되어있는데 이부분을 그냥dictionary["LASTHISTORYKEY"] 값을 받아오도록 바꾸면 중복키 오류가 해결될 것이다. dictionaryItem["LASTHISTORY"] 에는 Guid.NewGuid().ToString()으로 생성한 값이 재대로 들어가 있기 때문이다.
from itertools import permutations
문자열이된 숫자 배열 = list(map(str,숫자 배열))
for i in range(1,len(숫자배열)+1):
for permu in permutations(문자열이된 숫자 배열,i):
result.append(''.join(permu))
result = list(map(int,result))
# 중복된 값을 제거하구 싶으면 set을 활용한다.
resultSet = set(result)