반응형

파이썬 문제풀이/투 포인터 2

[백준 1806] 부분합

[백준 1806] 부분합 문제 10000 이하의 자연수로 이루어진 길이 n짜리 수열이 주어진다 이 수열에서 연속된 수들의 부분합 중에 그 합이 s 이상이 되는것 중 가장 짧은 것의 길이를 구하는 프로그램을 작성하시오 입력 첫줄에 n과 s가 주어진다. 둘째 줄 에는 수열이 주어진다. 수열의 각 원소는 공백으로 구분된다. 출력 첫 줄에 구하고자 하는 최소의 길이를 출력하며 만약 없으면 0을 출력한다. 풀이 투포인트를 이용하여 풀었다 합 s에 이상이 되는 부분합의 개수를 카운트할 변수로 now와 그 갯수를 넣을 리스트 ans를 만들었다 일단 기본적으로 투포인트와 같은 방식으로 진행한다 while문을 이용하여 현재까지 의 합이 도 달해 야합보다 작거나 end값이 n 보다 작을 때 sum+=data [end]하고..

[백준 파이썬] 3273 두 수의 합

3273 두 수의 합 https://www.acmicpc.net/problem/3273 문제 n개의 서로다른 양의 정수 로 이루어진 수열이 있다 ai의 값은 1보다 크고 1000000보다 작거나 같은 자연수 자연수 x 가 주어질때 ai+aj=x 를 만족하면 (ai,aj)쌍의 수를 구하는 프로그램을 작성하시 입력 첫째 줄에 수열의 크기 n이 주어진다. 다음 줄에는 수열에 포함되는 수가 주어진다. 셋째 줄에는 x가 주어진다. 출력 문제의 조건을 만족하는 쌍의 개수를 출력한다. 풀이 처음 풀었을때에는 완전탐색으로 풀었다 그랬더니 시간초과가 나서 알고리즘 유형을 보니 투 포인터 였다투 포인터가 2개의 위치 좌표를 이용하여 빠르게 합을 구하는 방법 인데 문제 내용을 보니 투 포인터 보다는 이진 탐색에 가까운 풀이..

반응형