투포인터알고리즘

    [알고리즘]연속 부분 수열 1 - 투포인터 알고리즘

    문제 N개의 수로 이루어진 수열이 주어집니다. 이 수열에서 연속부분수열의 합이 특정숫자 M이 되는 경우가 몇 번 있는지 구하는 프로그램을 작성하세요. 만약 N=8, M=6이고 수열이 다음과 같다면 1 2 1 3 1 1 1 2 합이 6이 되는 연속부분수열은 {2, 1, 3}, {1, 3, 1, 1}, {3, 1, 1, 1}로 총 3가지입니다. 입력예제 N=8, M=6 1 2 1 3 1 1 1 2 강사님의 풀이 function solution(m, arr){ let answer = 0; let sum = 0; let left = 0; //left, right 두개의 포인터로 시작, right는 for문 안에서 증감된다. for(let right = 0; right=m){ //sum이 m보다 크거나 같으면, ..

    [알고리즘] 공통원소 구하기 - 투포인터 알고리즘

    문제 A, B 두 개의 집합이 주어지면 두 집합의 공통 원소를 추출하여 오름차순으로 출력하는 프로그램을 작성하세요. (두 집합의 공통원소를 오름차순 정렬하여 출력합니다.) 입력예제 5 1 3 9 5 2 5 3 2 5 7 8 풀이 function solution2(arr1, arr2) { let answer = []; let n = arr1.length; let m = arr2.length; let p1 = 0; let p2 = 0; arr1.sort((a, b) => a - b); arr2.sort((a, b) => a - b); while (p1 < n && p2 < n) { if (arr1[p1] === arr2[p2]) { answer.push(arr1[p1++]); p2++; } else if (..