Java/BOJ

[BOJ] 백준 2828. 사과 담기 게임

동구름이 2024. 5. 14. 07:59

문제

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

 

 

 


풀이

 포인터를 이용해 문제를 해결했습니다. 

 

 바구니의 시작 점을 start, 그리고 끝 점은 end = start+M-1 로 표현할 수 있습니다. 그리고 들어오는 입력 값이 start와 end 사이에 있다면 이동하지 않아도 되고, 만약 범위 밖이라면 start와 end를 통채로 ++, --를 통해 옮겨주었습니다.

 

 그리고 이동할 때마다 moveDist라는 변수를 ++ 해주며 답을 구했습니다.

 

 

아래는 소스 코드입니다.


소스 코드

import java.util.Scanner;

public class B2828_사과담기게임 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        int M = sc.nextInt();
        int j = sc.nextInt();
        
        int start = 1;
        int end = start+M-1;
        int moveDist = 0;

        for(int i = 0;i<j;i++){
            int num = sc.nextInt();
            if(num<start){
                while(num!=start){
                    start--;
                    end--;
                    moveDist++;
                }
            }
            if(num>end){
                while(num!=end){
                    start++;
                    end++;
                    moveDist++;
                }
            }
        }
        System.out.println(moveDist);
    }
}