문제 풀이/백준

[백준] 2828번. 사과 담기 게임 (JAVA)

27200 2024. 1. 15. 20:20

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


문제


풀이

import java.util.*;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int m = sc.nextInt();
		int t = sc.nextInt();
		int move = 0;
		
		int left = 0;
		int right = 0 + (m - 1);
		
		for(int i = 0; i < t; i++) {
			int tmp = sc.nextInt() - 1;
			if(tmp > right) {
				move += tmp - right;
				right = tmp;
				left = tmp - (m - 1);
			}
			else if(tmp < left) {
				move += left - tmp;
				left = tmp;
				right = tmp + (m - 1);
			}
		}
		System.out.println(move);
	}
}

 왼쪽과 오른쪽 끝을 설정하여 최소한의 이동을 구현시키는 것을 문제의 포인트로 잡는다면 크게 어렵지 않은 문제인 것 같다.