Coding Test - cpp/Greedy
[백준 2828: 사과 담기 게임] - C++
에드윈H
2021. 1. 29. 10:39
#include<iostream>
#include<string.h>
using namespace std;
int main(){
int screenSize;
int basketSize;
int appleNum;
cin >> screenSize;
cin >> basketSize;
cin >> appleNum;
int arr[20];
memset(arr, -1, sizeof(arr));
int n;
//사과 떨어지는 위치 순서 저장
for (int i = 0; i < appleNum; i++)
{
cin >> n;
arr[i] = n;
}
//처음 바구니의 자치하는 정도
int left = 1;
int right = basketSize;
int moveCost = 0;
for (int i = 0; i < appleNum; i++)
{
int curDrop = arr[i]; //현재 떨어지는 위치
int curCost = 0; //현재 움직이는 비용
if (right < curDrop) //떨어지는 위치가 바구니보다 오른쪽일때
{
curCost = curDrop - right;
moveCost += curCost;
left += curCost;
right += curCost;
}
else if (curDrop < left ) { //떨어지는 위치가 바구니보다 왼쪽일때
curCost = left - curDrop;
moveCost += curCost;
left -= curCost;
right -= curCost;
}
else { //떨어지는 위치가 바로 받을수 있는 위치
moveCost += 0;
}
}
cout << moveCost << endl;
return 0;
}