투포인터

푼 날짜 : 2024.09.05푼 문제 : [2470] / 두 용액사용한 언어 : python  푼 방법 :항상 범위를 잘 확인해야한다.위의 문제처럼 범위가 엄청나게 큰 경우 계산을 어떻게 하면 효율적으로 할지 잘 판단해야한다!! 이번 문제의 경우에는 음수값도 포함이 되며 0에 가까워야 하므로 절댓값이 가장 작아야 한다고 생각했다.또한 인접값을 계산하는 것이 아니라 배열 내 두 요소를 고려하여 0에 가까운 값을 만드는 것이 핵심이므로 절댓값 기준으로 정렬을 하고 시작했다. 이렇게 해서 가장 0에 가까운 값을 만드는 두 요소를 출력하는데, 이 때 값을 오름차순으로 출력해야 한다.  코드 :import sysN = int(sys.stdin.readline())lst = list(map(int, sys.std..
푼 날짜 : 2024.09.04푼 문제 : [1806] / 부분합사용한 언어 : python  푼 방법 :투포인터로 접근하였다.왜냐하면 범위자체가 N (10 ≤ N S (0 10,000이하의 자연수이기 때문에 매번 합을 구하는 것은 비효율적이므로 이전합에 가장 왼쪽 값을 빼주고 오른쪽 값을 더해가는 식의 투포인터로 풀었다. 가장 어려웠던 것은 index 계산이었다.결국... 약간 엉성하게 반례에 맞는 조건을 다시 한 번 걸어줌으로써 문제를 해결했다. 예를들면 아래와 같은 반례이다. 4 26 7 8 9 이런 경우에는 굳이 합을 구하지 않아도 각각의 원소가 S이상이기 때문에 최소의 길이는 당연히 1이 된다. 이번 코드에서는 미리 한 바퀴 돌면서 각 요소가 하나라도 S를 넘는다면 바로 1을 출력하게 하고 아닐..
__narrrrrmm
'투포인터' 태그의 글 목록