-
[프로그래머스] 쿠키 구입문제 풀이 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; }
'문제 풀이' 카테고리의 다른 글
[프로그래머스] 스티커 모으기(2) (0) 2020.10.02 [프로그래머스] JadenCase 문자열 만들기 (0) 2020.10.01 [프로그래머스] 캠핑 (0) 2020.09.29 [프로그래머스] 보석 쇼핑 (0) 2020.09.28 [프로그래머스] 수식 최대화 (0) 2020.09.26