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);
}
}