백준 12892 파이썬 문제
- CS/BOJ
- 2022. 2. 14.
https://www.acmicpc.net/problem/12892
- N = 100,000이고 완전탐색을 할 경우 10억의 시간이 필요하다. 따라서 TLE 발생한다.
- N^2에서 시간을 줄여야 할 필요가 있다. 가능한 경우의 수는 그리디, DP, 이분탐색, 두 포인터다.
- 정렬하게 되면, 가장 큰 값을 가지는 영역을 구하면 되는 문제로 치환이 가능하다.
- 항상 모든 값은 양수이기 때문에 영역의 길이가 가장 긴 놈들 중에 가장 큰 값을 가지는 것으로 치환이 가능하다.
- 따라서 두 포인터 문제로 치환할 수 있다.
- 이 때, R의 값이 커질 때만 정답인지를 체크하면 된다. 왜냐하면 L의 값이 커지면, 범위가 작아지기 때문에 항상 지금보다 더 작은 값이 되기 때문이다.
- R > 배열 길이보다 클 때까지 체크를 반드시 해야한다. 왜냐하면 가장 마지막에 있는 R만 있을 때가 가장 큰 값을 가질 수 있기 때문이다. L > R인 경우가 되면 체크하지 않아도 된다. 왜냐하면 L = R인 경우가 값의 차이가 가장 적어지는 것이기 때문에 L > R인 경우는 있을 수 없기 때문이다. (문제에서 주어진 값은 D >= 1이다)
'CS > BOJ' 카테고리의 다른 글
백준 2638 치즈 파이썬 (0) | 2022.02.19 |
---|---|
백준 1484 다이어트 파이썬 (0) | 2022.02.19 |
백준 2435 파이썬 코드 (0) | 2021.10.04 |
백준 21758 파이썬 코드 (1) | 2021.10.04 |
백준 2842 파이썬 문제풀이 (0) | 2021.09.16 |