dp에 대해 아시나요?
이 문제는 dp로 쉽게 해결이 가능합니다.
dp의 개념에 대해선
https://www.acmicpc.net/wiki/%EC%95%8C%EA%B3%A0%EB...
이곳(통칭 신의 문서)에 나와있으니 읽어보세요.
이 문제에 대해서 설명해보자면
앞에서 + - + - 의 연산을 통해 pos가 4, result가 2라고 합시다.
또, - + - + 의 연산을 통해 pos가 4, result가 2가 나왔습니다.
이 두 경우에서, 각 각 pos 뒤의 나머지를 가지고 경우의 수를 구하면
두개의 답이 서로 다를까요?
정답은 no입니다.
앞에서 어떤 연산과정을 거쳤던 간에, pos와 result가 같다면, 뒷부분의 경우의 수는 언제나 같습니다.
이러한 성질을 이용해서 이미 지나쳤던 pos, result 가 있다면, 다시 재귀하지 말고 예전에 구했던 값을 그대로 리턴해주면 됩니다.
그러면 모든 경우의수를 직접 구하지 않아도 답을 얻을 수 있죠.
darkziny22 9년 전
처음에는 백트래킹 형태로 모든 경우에 대해 계산해서 시간초과가 났습니다
그래서 생각해보니 0은 더하거나 빼거나 상관없이 그대로 유지되기 때문에
입력시 0의 수를 기억하고, 계산시에는 0을 건너뛰어 계산 하고 나온 값에
2를 0의 갯수만큼 제곱한만큼을 곱해서 출력했는데도 약 46%에서 시간초과가 뜨네요..
해결 할 방법이 뭐가 있을까요...?