투포인터

백준 오답노트/투 포인터

백준 - 투 포인터 1806번 부분합 / 문제풀이, 오답노트

투 포인터 알고리즘을 이용해서 해결하는 문제. = 내가 틀린 이유 = 시간 초과로 틀렸다. while문 안에 for문을 이용해서 코드를 짰는데, 이렇게 하면 시간 복잡도는 O(NlogN) while문 하나만 이용해서 O(N)을 만들어야 해결할 수 있는 문제다. = 접근 방법 = 1. 부분합을 구하는 문제이기 때문에 정렬할 필요 x 2. 투 포인터 알고리즘을 이용해서 부분합 구한 후, 최솟값을 계속 갱신 3. while문 종료 조건을 if (sum >= s) 이후, else if에 end == n을 사용하는 이유는? 예제 입력 1에 9, 2, 8 부분을 보면 9, 2, 8일 때, 19이고 if (sum >= s) 를 타고 2, 8이 된다. 그리고 end == n 이라는 조건을 만나서 while문 종료 따라..

알고리즘/투 포인터

투 포인터 알고리즘에 대한 설명 + 백준 - 수들의 합2_2003번 문제 풀이

투 포인터 개념 각 원소마다 모든 값을 순회해야할 때, *연속하다는 특성을 이용해서 처리, 단순 반복문을 이용해서 문제를 해결하려고 하면, 시간 복잡도가 O(N^2), O(N^3)인 경우가 있기 때문에 투 포인터 알고리즘을 이용해서 문제를 해결해야 된다. 포인터 2개가 1차원 배열을 증가하는 방향으로만 순회하므로 O(N) + O(N) = O(N) 이 알고리즘을 처음 접했을 때 어려웠는데 이제는 기본적인 문제는 풀 수 있게 되었다. 그만큼 계속 반복함! https://www.acmicpc.net/problem/2003 이 문제를 기반으로 설명을 하겠따. n개로 나열 된 수, +해서 m이되는 경우의 수를 구하자 - 자연수로 이루어진 1차원 배열이 주어진다. - 연속되는 부분 배열 중 원소의 합이 M이 되는 ..

초보병일이
'투포인터' 태그의 글 목록