문제 풀이

[프로그래머스] 쿠키 구입

컴영 2020. 9. 30. 17:37

쿠키구입


문제) https://programmers.co.kr/learn/courses/30/lessons/49995


풀이)

투포인터를 이용해서 푼 문제이다.


과정

1. for문을 통해 인덱스 0 ~ cookie.size() - 2 까지 차례로 시작 인덱스 start 로 정한다.

 1.1. 시작인덱스 start + 1 을 마지막 인덱스 end 로 둔다.

 1.2. (0 ~ 시작 인덱스 start) / (마지막 인덱스 end ~ cookie.size() - 1)  범위로 나눠 

    start와 end 두 인덱스 포인터를 이동시키며 두 쿠기 구간의 합을 비교한다.


   *start 포인터는 왼쪽으로 이동, end 포인터는 오른쪽으로 이동한다.

   *오른쪽 구간의 합이 크면, 왼쪽 구간을 늘린다 = start 포인터를 한칸 왼쪽으로 이동

   *왼쪽 구간의 합이 크면, 오른쪽 구간을 늘린다 = end 포인터를 한칸 오른쪽으로 이동

  


코드)


#include <string> #include <vector> using namespace std; int solution(vector<int> cookie) { int answer = 0; for(int i=0;i<cookie.size()-1;i++){ int start = i; int start_sum = cookie[start]; int end = i+1; int end_sum = cookie[end]; while(true){ if(start_sum == end_sum && start_sum > answer){ answer = start_sum; } else if(start_sum < end_sum && start > 0){ start_sum += cookie[--start]; } else if(start_sum >= end_sum && end < cookie.size() -1){ end_sum += cookie[++end]; } else break; } } return answer; }