반응형
https://www.acmicpc.net/problem/2828
C++
#include <iostream>
#include <algorithm>
using namespace std;
int main(void)
{
ios::sync_with_stdio(0);
cin.tie(0);
int M, N, J, L = 1, R, A, D = 0, move;
cin >> M >> N >> J;
// M = 전체 칸, N = 바구니 크기 (1 ≤ M < N ≤ 10)
// J = 사과 개수 (1 ≤ J ≤ 20)
// L = 바스켓 왼쪽 끝 위치
// R = 바스켓 오른쪽 끝 위치
// A = 사과 떨어지는 위치
// D = 이동거리 (result)
for (int i = 0; i < J; i++)
{
// 바스켓 오른쪽 끝 위치 지정.
R = L + N - 1;
cin >> A;
// 바구니 범위 안이면 스킵.
if (A >= L && A <= R) continue;
// 바구니 양 끝 중에서 사과와 가까운 쪽으로 이동거리 구하기.
move = min(abs(A - R), abs(A - L));
D += move;
// 바스켓 이동 후 위치 재지정.
L = L > A ? L - move : L + move;
}
cout << D;
}
반응형
'Algorithm > Greedy Algorithm' 카테고리의 다른 글
[BOJ 2891] S5 카약과 강풍 {C++} (0) | 2022.06.29 |
---|---|
[ BOJ 6550 ] S5 UCPC는 무엇의 약자일까? { C++ } (0) | 2022.06.28 |
[ BOJ 6550 ] S5 부분 문자열 { C++ } (0) | 2022.06.27 |
[ BOJ 3135 ] S5 라디오 { C++ } (0) | 2022.06.26 |