간단하게 설명드리면 a[i]는 입력을 char배열로 저장(짝수는 숫자, 홀수는 연산자), i번째 자릿수에 있는 수가 i-2(바로 앞의 수)번째 수와 괄호로 묶이면 d[i][0]에 안묶이면 d[i][1]에 최댓값을 저장하는 방식으로 구현했습니다.(d에서 최댓값을 저장할때 짝수 idx만 사용)
점화식은
1. d[i][0]
1-1. i번째 수가 i-2번째 수와 묶인다면 괄호가 겹치면 안되므로, i-2번째 수와 i-4번째 수는 괄호로 묶이지 않아야한다.
1-2. a[i-2], a[i]를 괄호로 묶어 a[i-1]로 연산 후에
d[i-4][0]과 d[i-4][1] 중 큰것과 a[i-3]로 연산하면 최댓값이다.
2. d[i][1]
2-1. i번째 수가 i-2번째 수와 묶이지 않는다면, i-2번째 수는 i-4번째 수와 묶여도 되고 묶이지 않아도 된다.
dks301 4년 전
간단하게 설명드리면 a[i]는 입력을 char배열로 저장(짝수는 숫자, 홀수는 연산자), i번째 자릿수에 있는 수가 i-2(바로 앞의 수)번째 수와 괄호로 묶이면 d[i][0]에 안묶이면 d[i][1]에 최댓값을 저장하는 방식으로 구현했습니다.(d에서 최댓값을 저장할때 짝수 idx만 사용)
점화식은
1. d[i][0]
1-1. i번째 수가 i-2번째 수와 묶인다면 괄호가 겹치면 안되므로, i-2번째 수와 i-4번째 수는 괄호로 묶이지 않아야한다.
1-2. a[i-2], a[i]를 괄호로 묶어 a[i-1]로 연산 후에 d[i-4][0]과 d[i-4][1] 중 큰것과 a[i-3]로 연산하면 최댓값이다.
2. d[i][1]
2-1. i번째 수가 i-2번째 수와 묶이지 않는다면, i-2번째 수는 i-4번째 수와 묶여도 되고 묶이지 않아도 된다.
2-2. max(d[i-2][0], d[i-2][1])과 a[i]를 a[i-1]로 연산하면 최댓값이다.
N이 1일때나, 제가 만들어본 반례는 모두 통과하는데 제출하자마자 바로 틀립니다.
로직상에서 틀린부분이나 반례 좀 부탁드립니다.