투포인터 3

[백준] 1806 부분합 (Python 파이썬)

www.acmicpc.net/problem/1806 1806번: 부분합 첫째 줄에 N (10 ≤ N < 100,000)과 S (0 < S ≤ 100,000,000)가 주어진다. 둘째 줄에는 수열이 주어진다. 수열의 각 원소는 공백으로 구분되어져 있으며, 10,000이하의 자연수이다. www.acmicpc.net 문제 설명 수열에서 연속된 수들의 부분합 중에 그 합이 S 이상이 되는것 중, 가장 짧은 것의 길이를 구하는 문제이다. 풀이 과정 전형적인 투포인터 문제이다. 시작점과 끝점을 적절히 이동시키며 그 사이에 있는 부분들의 합을 이용해 정답을 찾는 문제이다. 처음에 시작점과 끝점을 0으로 둔다. 그 후 시작점과 끝점을 움직이면서 구간의 길이를 조절하게 되는데, 현재 구간이 S보다 작다면, 구간을 더 늘..

[백준] 2003 수들의 합2 (Python 파이썬)

www.acmicpc.net/problem/2003 2003번: 수들의 합 2 첫째 줄에 N(1 ≤ N ≤ 10,000), M(1 ≤ M ≤ 300,000,000)이 주어진다. 다음 줄에는 A[1], A[2], …, A[N]이 공백으로 분리되어 주어진다. 각각의 A[x]는 30,000을 넘지 않는 자연수이다. www.acmicpc.net 문제 설명 N개의 수열 A[1],A[2], ..., A[N]이 주어졌을 때, 수열의 부분 합이 M이 되는 경우의 수를 구하는 문제입니다. 즉, 중간중간 A[2]+A[3]+A[4] = M이라면 경우의 수가 하나 추가가 되는 문제입니다. 풀이 과정 전형적인 투포인터 문제입니다. 시작점과 끝점을 먼저 시작점에 놓습니다. 주어진 수들은 모두 자연수이기 때문에 현재 구간의 합이 ..

[프로그래머스] 보석 쇼핑 (Python 파이썬)

programmers.co.kr/learn/courses/30/lessons/67258 코딩테스트 연습 - 보석 쇼핑 ["DIA", "RUBY", "RUBY", "DIA", "DIA", "EMERALD", "SAPPHIRE", "DIA"] [3, 7] programmers.co.kr 문제 설명 위 링크에 나온 설명처럼, 모든 종류의 보석을 적어도 1개 이상 포함하는 가장 짧은 구간을 찾는 문제입니다. 풀이 과정 이 문제는 투 포인터 유형의 문제입니다. 변수로 주어진 보석들의 목록인 gems에는 보석들이 중복되어 포함되어 있습니다. 그래서 보석의 종류만을 구하기 위해 set을 이용해 setlen에 보석의 종류를 넣어줬습니다. start와 end를 처음지점으로 놓고, 최초의 길이는 처음부터 끝까지로 지정합니..