백준 2828 사과 담기 게임 JAVA 풀이 (그리디, 구현)

2026. 4. 4. 10:28·코테(Solved.ac + Programmers)
728x90

🔗 문제 링크

https://www.acmicpc.net/problem/2828


📌 문제 개요

사과가 떨어지는 위치가 순서대로 주어질 때,
크기 M의 바구니를 좌우로 이동시켜 모든 사과를 받는다.

이때 바구니 이동 거리의 최솟값을 구하는 문제


📌 접근 방법

  • 바구니를 [left, right] 범위로 관리
  • 사과 위치가 바구니 안이면 이동하지 않음
  • 바구니 밖이면 최소 거리만큼 이동

📌 핵심 아이디어

  • 바구니는 항상 길이 M 유지
  • 이동은 항상 최소 거리
  • 상황은 3가지
  1. 바구니 안 → 이동 X
  2. 왼쪽 밖 → 왼쪽 이동
  3. 오른쪽 밖 → 오른쪽 이동

📌 전체 코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        String[] first = br.readLine().split(" ");
        int N = Integer.parseInt(first[0]);
        int M = Integer.parseInt(first[1]);

        int J = Integer.parseInt(br.readLine());

        int left = 1;
        int right = M;

        int move = 0;

        for(int i = 0; i < J; i++){
            int pos = Integer.parseInt(br.readLine());

            if(pos >= left && pos <= right){
                continue;
            } else if(pos < left){
                move += (left - pos);
                left = pos;
                right = pos + M - 1;
            } else {
                move += (pos - right);
                right = pos;
                left = pos - M + 1;
            }
        }

        System.out.println(move);
    }
}

🧾 정리

  • 바구니 범위만 잘 관리하면 되는 문제
  • 핵심은 조건 분기 + 최소 이동
  • 구현 난이도는 낮지만 아이디어가 중요
728x90

'코테(Solved.ac + Programmers)' 카테고리의 다른 글

백준 1236 성 지키기 JAVA 풀이 (구현, 그리디)  (0) 2026.04.06
백준 5800 성적 통계 JAVA 풀이 (정렬, 구현)  (0) 2026.04.06
백준 16435 스네이크버드 JAVA 풀이 (그리디, 정렬)  (0) 2026.04.03
백준 1652 누울 자리를 찾아라 JAVA 풀이 (구현, 문자열, 완전탐색, 시간복잡도)  (0) 2026.04.02
백준 4659 비밀번호 발음하기 JAVA 풀이 (구현, 문자열, O(L))  (0) 2026.04.01
'코테(Solved.ac + Programmers)' 카테고리의 다른 글
  • 백준 1236 성 지키기 JAVA 풀이 (구현, 그리디)
  • 백준 5800 성적 통계 JAVA 풀이 (정렬, 구현)
  • 백준 16435 스네이크버드 JAVA 풀이 (그리디, 정렬)
  • 백준 1652 누울 자리를 찾아라 JAVA 풀이 (구현, 문자열, 완전탐색, 시간복잡도)
PUSH → MERGE → DEPLOY
PUSH → MERGE → DEPLOY
데이터 흐름과 운영 자동화를 설계하는 백엔드 개발자
  • PUSH → MERGE → DEPLOY
    Coding Dongin
    PUSH → MERGE → DEPLOY
  • 전체
    오늘
    어제
    • MEUN N
      • 코테(Solved.ac + Programmers) N
      • BootCamp(JAVA)
      • JAVA
      • SpringBoot
      • JavaScript
      • JSP
      • DB(SQL)
      • React
      • HTML_CSS
      • jQuery
      • SCSS
      • GSAP
      • 설치 + 꿀팁
      • 정보처리기사 오답노트
      • 정보처리기사 기출문제
  • 블로그 메뉴

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

    • GIT
  • 공지사항

  • 인기 글

  • 태그

    정처기
    백준
    dp
    springboot
    정보처리기사 실기 기출문제
    solved.ac
    정보처리기사
    정처기실기
    완전탐색
    문자열
    배열
    구현
    Level2
    수학
    java
    자바
    알고리즘
    정처기오답노트
    실기
    시뮬레이션
    자료구조
    level1
    코딩테스트
    프로그래머스
    정렬
    피보나치
    브루트포스
    기출문제
    level0
    백엔드개발자
  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.4
PUSH → MERGE → DEPLOY
백준 2828 사과 담기 게임 JAVA 풀이 (그리디, 구현)
상단으로

티스토리툴바