-
백준(BOJ) 1806번 부분합알고리즘 풀이/백준(Boj) 2020. 4. 15. 03:07
문제 : https://www.acmicpc.net/problem/1806
1806번: 부분합
문제 10,000 이하의 자연수로 이루어진 길이 N짜리 수열이 주어진다. 이 수열에서 연속된 수들의 부분합 중에 그 합이 S 이상이 되는 것 중, 가장 짧은 것의 길이를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N (10 ≤ N < 100,000)과 S (0 < S ≤ 100,000,000)가 주어진다. 둘째 줄에는 수열이 주어진다. 수열의 각 원소는 공백으로 구분되어져 있으며, 10,000이하의 자연수이다. 출력 첫째 줄에 구하고자 하는 최소의 길
www.acmicpc.net
풀이 :
완전 탐색을 이용 시 n이 크기에 시간 내에 처리하지 못하고 투 포인터를 이용해서 처리해보자
lo와 hi는 인덱스를 가리키고 0으로 초기화한 후 조건이 만족할 때마다 값을 경신해준다.
lo와 hi이 최대로 수행되더라도 2O(n) 이기 때문에 시간 내에 충분히 가능하다.
코드 ( C++ )
'알고리즘 풀이 > 백준(Boj)' 카테고리의 다른 글
백준(BOJ) 17085번 십자가 2개 놓기 (수정) (0) 2020.04.18 백준(BOJ) 15831번 준표의 조약돌 (0) 2020.04.15 백준(BOJ) 1022번 소용돌이 예쁘게 출력하기 (0) 2020.04.14 백준(BOJ) 16638번 괄호 추가하기 2 (0) 2020.04.09 백준(BOJ) 1726번 로봇 (0) 2020.04.08