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);
}
}
왼쪽과 오른쪽 끝을 설정하여 최소한의 이동을 구현시키는 것을 문제의 포인트로 잡는다면 크게 어렵지 않은 문제인 것 같다.
'문제 풀이 > 백준' 카테고리의 다른 글
[백준] 13305번. 주유소 (JAVA) (0) | 2024.01.16 |
---|---|
[백준] 2217번. 로프 (JAVA) (0) | 2024.01.16 |
[백준] 14916번. 거스름돈 (JAVA) (0) | 2024.01.15 |
[백준] 1343번. 폴리오미노 (JAVA) (0) | 2024.01.15 |
[백준] 1806번. 부분합 (JAVA) (0) | 2023.01.12 |