
정답구간 [2, 4, -1, 5, -3, 2, 1]의 합인 10이 최댓값입니다.
핵심 개념
최대 연속 부분합(Maximum Subarray Sum)과 카데인 알고리즘
연속 부분합의 최댓값이란 배열에서 이웃한 원소들을 끊김 없이 이어 붙였을 때 나올 수 있는 합 중 가장 큰 값을 말합니다. 모든 구간을 다 더해 보면 O(n²)이지만, 카데인(Kadane) 알고리즘을 쓰면 O(n)에 풀립니다. 방법은 간단합니다. 왼쪽부터 훑으면서 '현재 원소에서 끝나는 최대 구간합'을 계속 갱신하는데, 직전까지의 누적합에 현재 원소를 더한 값과 현재 원소 하나만 취한 값 중 큰 쪽을 고릅니다. 누적합이 음수가 되면 그 구간은 버리고 새로 시작하는 것이 핵심입니다. 그렇게 갱신되는 값들 중 최댓값이 정답이 됩니다.
선지별 해설
①5는 원소 하나(5)만 취했을 때의 값입니다. 그러나 5 앞뒤의 2, 4, -1과 -3, 2, 1을 함께 묶으면 합이 더 커지므로 최댓값이 될 수 없습니다.
②8은 전체 원소를 모두 더한 값(1-3+2+4-1+5-3+2+1-2=6)도 아니고, 실제 최적 구간보다 작은 값입니다. 뒤쪽의 -2를 포함한 구간 합 등이 8이 되지만 이는 최댓값이 아닙니다.
③2번째 원소 -3을 버리고 세 번째 원소 2부터 시작하면 2+4-1+5-3+2+1 = 10이 됩니다. 카데인 알고리즘으로 누적값을 추적해도 1 → -2 → 2 → 6 → 5 → 10 → 7 → 9 → 10 → 8로 최댓값 10이 나옵니다.
④양수만 골라 더하면 1+2+4+5+2+1 = 15이지만, 이는 연속되지 않은 원소를 모은 값입니다. 문제는 '연속' 부분합을 요구하므로 중간의 음수를 건너뛸 수 없습니다.

정답이진 탐색은 데이터가 반드시 정렬되어 있어야 하므로 '순서 없이 저장되어 있다'는 설명이 틀렸습니다.
핵심 개념
이진 탐색(binary search)의 전제 조건과 시간 복잡도
이진 탐색은 정렬된 데이터의 중앙값과 찾는 값을 비교해, 찾는 값이 더 작으면 왼쪽 절반, 크면 오른쪽 절반만 남기는 방식으로 탐색 범위를 매번 절반으로 줄여 나가는 알고리즘입니다. 가장 중요한 전제는 '데이터가 정렬되어 있어야 한다'는 점입니다. 정렬되어 있지 않으면 중앙값 비교만으로 어느 쪽을 버릴지 판단할 수 없어 알고리즘 자체가 성립하지 않습니다. n개의 데이터를 절반씩 줄이므로 비교 횟수는 log₂n에 비례하고, 시간 복잡도는 O(log n)입니다. 또한 임의 위치 접근이 가능해야 하므로 배열처럼 인덱스 접근이 O(1)인 자료구조에 적합합니다.
선지별 해설
①중앙값과 비교해 한쪽 절반을 통째로 버리는 것이 이진 탐색의 핵심 동작이므로, 탐색 범위가 매 단계마다 절반씩 줄어드는 것이 맞습니다.
②이진 탐색은 정렬된 데이터에만 적용할 수 있습니다. 순서 없이 저장되어 있으면 중앙값보다 크거나 작다는 사실로 한쪽 범위를 배제할 수 없어 탐색이 성립하지 않습니다. 정렬되지 않은 데이터는 순차 탐색을 써야 합니다.
③n을 절반씩 줄여 1이 될 때까지의 단계 수가 약 log₂n이므로 시간 복잡도는 O(log n)이 맞습니다.
④log₂1000 ≈ 9.97이므로 올림하면 10입니다. 즉 1,000개 데이터라면 최대 10회의 비교로 탐색이 끝나므로 맞는 설명입니다.