목록두 포인터 (10)
기록방
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bHk2wk/btswkmRB7OQ/1MCZk0dDF0APXN6jAzkfnk/img.png)
👉 문제링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🔸 문제 분석 🔸 원하는 물품과 그 개수가 주어진다. 각 날짜 별 할인 물품 리스트가 주어진다. 10일 이내에 원하는 물품을 각 개수 이상 살 수 있는 구간의 수를 반환한다. 🔸 문제 풀이 🔸 슬라이딩 윈도우 방식으로 10크기의 윈도우를 이동하며 물품 개수를 체크한다. 🔸 코드 🔸 import java.util.Map; import java.util.HashMap; class Solution { public int solution(String[] want, int[] number, String[]..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/KwwRJ/btsj6iVfWR4/0krsCSDkS24qObOcWdUsQK/img.png)
💡 투 포인터는 2개의 포인터로 알고리즘의 시간 복잡도를 최적화한다. 🚀 투 포인터 예시 1 : 연속된 자연수의 합 구하기 백준 2018번 : 수들의 합 5 자연수 N(1
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cP2XCB/btr8H1c76Zp/8BLBiWcDyjKkWnnzEFuk4K/img.png)
👉 문제링크 1806번: 부분합 첫째 줄에 N (10 ≤ N < 100,000)과 S (0 < S ≤ 100,000,000)가 주어진다. 둘째 줄에는 수열이 주어진다. 수열의 각 원소는 공백으로 구분되어져 있으며, 10,000이하의 자연수이다. www.acmicpc.net 🔸 문제 분석 🔸 N자리의 수열 중 합이 S이상이 되는 수열 중 가장 짧은 것의 길이를 출력한다. N은 10,000 이하의 자연수이다. S는 0이상, 100,000,000(1억) 이하이다. 수열의 모든 수를 확인하긴 해야한다. 합이 S가 되는 것을 효율적이게 비교하기 위해서, 매번 전부 더하는 것이 아니라 하나씩 더하고 빼며 진행한다. 따라서 투포인터 알고리즘을 사용한다. 🔸 코드 🔸 import java.io.BufferedReade..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bBIQQt/btrV2QfUtIH/p4KBePJE5C7mRFga8BELc1/img.png)
👉 문제링크 3273번: 두 수의 합 n개의 서로 다른 양의 정수 a1, a2, ..., an으로 이루어진 수열이 있다. ai의 값은 1보다 크거나 같고, 1000000보다 작거나 같은 자연수이다. 자연수 x가 주어졌을 때, ai + aj = x (1 ≤ i < j ≤ n)을 만족하는 www.acmicpc.net 🔸 문제 분석 🔸 n개의 수에서 두 수의 합이 x가 되는 경우의 수를 출력한다. 수열을 오름차순 정렬한다. 두 포인터를 만들어서 하나는 맨 앞, 하나는 맨 뒤부터 시작해 합이 x인지 확인하며 카운트한다. 합이 x보다 작으면 앞 포인터를 +1, 크면 뒤 포인터를 -1 한다. 앞 포인터를 +1하면 합이 커진다. 뒤 포인터를 -1하면 합이 작아진다. 앞 포인터와 뒤 포인터가 만나면 종료한다. 카운트한..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/PGvnd/btrV1bEOebJ/c0zcb3yRRx31RRq81H4AWk/img.png)
👉 문제링크 2559번: 수열 첫째 줄에는 두 개의 정수 N과 K가 한 개의 공백을 사이에 두고 순서대로 주어진다. 첫 번째 정수 N은 온도를 측정한 전체 날짜의 수이다. N은 2 이상 100,000 이하이다. 두 번째 정수 K는 합을 구하기 www.acmicpc.net 🔸 문제 분석 🔸 n개의 수로 이루어진 수열에서 연속된 k개를 골랐을 때 그 합의 최대값을 출력한다. 전형적인 두 포인터, 슬라이딩 윈도우 문제이다. 🔸 코드 🔸 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.StreamTokenizer; import java.util.StringTokeniz..