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

2026. 8. 4. 12:54·Algorithm/Algorithm

이 글은 Velog에서 이전한 글입니다. Velog 원문 보기

Lv 4. 쿠키 구입

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


접근법

문제 접근 알고리즘: 투포인터, 누적합(슬라이딩 윈도우 변형)

문제의 본질

  • 연속된 두 구간의 합이 같은 경우 중, 그 합의 최대값 찾기

전략은 간단했다.

  • 경계점 m을 기준으로 좌, 우를 투 포인터로 확장

이유는 과자 수는 음수가 없으므로, 합이 작은 쪽을 늘리는 방식이 항상 올바르게 수렴하기 때문이다.


풀이 전략은 평범한 투포인터 문제와 같다.

경계점 m을 왼쪽 구간의 끝으로 고정

  • 초기 상태
    • 왼쪽 포인터 l = m
    • 오른쪽 포인터 r = m+1
    • left_sum = cookie[l]
    • right_sum = cookie[r]
  • 포인터 이동 규칙
    • left_sum == right_sum
      • 최댓값 비교를 통해 정답 갱신
      • 왼쪽, 오른쪽 확장
    • left_sum < right_sum, left_sum > right_sum
      • 값이 작은 쪽 확장
  • 종료 조건
    • 포인터가 배열 범위를 벗어나면 종료

정답 풀이 코드

풀이

def solution(cookie):
    n = len(cookie)
    answer = 0

    for m in range(n-1):
        l = m
        r = m+1

        left_sum = cookie[l]
        right_sum = cookie[r]

        while True:
            if left_sum == right_sum:
                answer = max(answer, left_sum)

                # 양 쪽 모두 확장
                l -= 1
                r += 1
                if l < 0 or r >= n:
                    break
                left_sum += cookie[l]
                right_sum += cookie[r]

            elif left_sum < right_sum:
                # 왼쪽 확장
                l -= 1
                if l < 0:
                    break
                left_sum += cookie[l]
            else:
                # 오른쪽 확장
                r += 1
                if r >= n:
                    break
                right_sum += cookie[r]

    return answer

'Algorithm > Algorithm' 카테고리의 다른 글

[BOJ, Python] 2252번_줄 세우기 With 위상 정렬  (0) 2026.08.02
[BOJ, Python] 1197번_최소 스패닝 트리  (0) 2026.08.02
[Leetcode, Python] 300. Longest Increasing Subsequence 풀이  (0) 2026.07.31
[BOJ, Python] 백준 NZEC(Non-Zero Exit Code) 오류  (0) 2026.07.31
[BOJ, Python] 1699번_제곱수의 합  (0) 2026.07.31
'Algorithm/Algorithm' 카테고리의 다른 글
  • [BOJ, Python] 2252번_줄 세우기 With 위상 정렬
  • [BOJ, Python] 1197번_최소 스패닝 트리
  • [Leetcode, Python] 300. Longest Increasing Subsequence 풀이
  • [BOJ, Python] 백준 NZEC(Non-Zero Exit Code) 오류
pp8817
pp8817
공부한 내용, 개발 관련 지식, 트러블 슈팅 등을 기록합니다. 이전 블로그: https://velog.io/@pp8817/posts
  • pp8817
    끄적이는 개발 log
    pp8817
  • 전체
    오늘
    어제
    • 분류 전체보기 (273)
      • Project (71)
        • 척척학사 (29)
        • Book (23)
        • Saynow (3)
        • YAPP 27기 (4)
        • 나의 작은 프로젝트 (10)
        • Landit (2)
      • Backend (88)
        • Spring (13)
        • Spring MVC (13)
        • Spring Security (4)
        • JPA (26)
        • Database (19)
        • HTTP·Web (13)
        • Architecture (0)
      • Language·CS (59)
        • Java·Kotlin (5)
        • CS Interview (17)
        • Backend Interview (5)
        • Concepts (32)
      • Algorithm (25)
        • Algorithm (24)
        • 소마 알고리즘 스터디 (1)
      • Infra (8)
      • Troubleshooting (11)
      • Retrospective (6)
      • Etc (5)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Spring MVC
    java
    트러블슈팅
    Book
    척척학사
    object
    Spring
    BOJ
    HTTP WEB 기본 지식
    http
    Python
    게시판
    OS
    jpa
    Project
    개념 정리!
    CS Interview
    Algorithm
    interview
    나의 작은 프로젝트
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
pp8817
[프로그래머스] Lv 4. 쿠키 구입
상단으로

티스토리툴바