[c++] 백준 2828, 사과 담기 게임

김현섭·2023년 7월 14일
1

[C++] 백준

목록 보기
16/36

백준 2828

🌲 문제 요약

스크린의 위에서 떨어지는 사과 여러 개를 바구니로 담으려고 할 때, 바구니의 최소 이동거리를 구하는 문제.

🌲 문제 풀이

바구니의 왼쪽과 오른쪽을 가리키는 변수 lr을 각각 선언하여, 사과가 떨어지는 위치가 lr의 사이인지 확인한다.
그렇지 않다면, 바구니의 위치가 사과의 왼쪽일 때와 오른쪽일 때의 경우를 나누어 따로 연산한다.

🌲 코드

#include <bits/stdc++.h>

using namespace std;
int n, m, j, ret;

int main() {
	cin >> n >> m >> j;
	int l = 1, r;
	for (int i = 0; i < j; i++) {
		r = l + m - 1;
		int tmp;
		cin >> tmp;
		if (tmp >= l && tmp <= r) continue;
		if (l > tmp) {
			ret += l - tmp;
			l = tmp;
		}
		else if (l < tmp) {
			ret += tmp - r;
			l += tmp - r;
		}
	}
	cout << ret << '\n';
	
	return 0;
}
profile
오롯이 밤길을 달래는 별에게로

0개의 댓글