- Best Sightseeing Pair
1021. Best Sightseeing Pair Acceptance 42.9%
NOTE
블로그라기 보다는 생각나는 생각나는 대로 두서없이 적는 낙서장이라고 보면 될것 같다.
2019년 3월 26일 16:25~16:45
문제
배열에서 가장 큰 $A[i] + A[j] + i - j$값을 리턴
생각 흐름
- 결과 결정하는 요소가 두 개다. 배열의 두 값, 그 두 사이의 거리.
- 배열의 두 값을 최대한으로 높이고, 가까운게 좋다.
- 그러면 둘 중 한 값은 무조건 배열의 최대값인가? - 유리한 것은 사실이나, 참은 아니다.
- 최대값을 기점으로 오른쪽 왼쪽으로 나누고 왼쪽에서 가장 큰 결과, 오른쪽에서 가장 큰 결과를, 걸쳐있을 때의 가장 큰 결과를 재귀적으로 구하고 셋 중 가장 큰 값을 리턴??
2019년 3월 26일 20:25~21:02
- 살짝 식을 단순화 해보자…
- i관련 값은 해당 배열의 값과 인덱스를 더한 것이고,
- j관련 값은 해당 배열의 값에서 인덱스를 뺀 것이다.
- 그러므로 일단 배열을 하나 선언해서 i관련 값을 구해서 세팅하고,
- 해당 배열을 역순으로 순회하면서 해당 인덱스의 j관련 그때까지의 맥스값을 더하면서 최대값만 리턴하면 될 것 같다.
- 이렇게 생각한 것은 j값 결과는 오른쪽에 있는 값이 최대값이라 가정했을 때 모든 배열에 영향을 끼치는 스택 구조로 생각을 했기 때문이다.
- 공간 복잡도 및 시간 복잡도는 $O(n)$이 된다.
Leave a comment