문제
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);
}
}
'Java > BOJ' 카테고리의 다른 글
[BOJ] 백준 13335. 트럭 (1) | 2024.05.18 |
---|---|
[BOJ] 백준 11728. 배열 합치기 (0) | 2024.05.15 |
[BOJ] 백준 14244. 트리 만들기 (0) | 2024.05.13 |
[BOJ] 백준 17073. 나무 위의 빗물 (0) | 2024.05.12 |
[BOJ] 백준 14267. 회사 문화 1 (0) | 2024.05.10 |