본문 바로가기

728x90

Pointer

[백준알고리즘] 1806번: 부분합 -Python [백준알고리즘] 1806번: 부분합 -Python 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 이번 문제는 저번에 풀었던 2003번 수들의 합 문제와 유사했다. 다만, 여기서는 주어진.. 더보기
[백준알고리즘] 2003번: 수들의 합 2 -Python [백준알고리즘] 2003번: 수들의 합 2 -Python https://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 두 가지 방법으로 문제를 해결했다. 쉽게 봤다가 시간제한이 0.5 임을 나중에 보고 Python으로 포기하기도 했었다.. 결국 Python으로도 통과하긴 했다. 연속합을 직접 구해준 방법 더블 포인터를 사용해 값을 찾아간 방법 1번 방법 처음에는 1부터 I까지의 합에서 1부터 J까지의 합을 빼서 J부터 K까지의 값.. 더보기

728x90