1806번 풀이

Baekjoon(C++)

[백준] 1806번: 부분합 C++로 풀어보기

생각 투 포인터를 사용해서 풀 수 있다. st, en 두 포인터를 둔다. 1. 수들을 입력받아 배열에 저장한다. 2. 수의 합을 저장하는 변수 total은 arr[0]을 더 해주고, 줄의 길이를 저장하는 변수 len은 최대한 큰 수로 둔다(0x7fffffff). 3. en을 0으로 둔다. 4. en이 n보다 작고 total이 s보다 작다면 en을 한 칸 오른쪽으로 옮긴다. 5. 그러고도 en이 n보다 작다면 total에 arr[en]을 더 해준다. 6. 계속 더하다보면 total이 s보다 커진다. 7. 그러면 그 때 en-st+1이 len보다 작다면 len에 en-st+1을 저장한다. 8. st가 다음 칸으로 넘어가기 전에 total에서 arr[st]를 빼준다. 9. 만약 s보다 큰 부분합을 찾지 못했다..

퀵차분
'1806번 풀이' 태그의 글 목록