[알고리즘] 2828번: 사과 담기 게임
2023. 9. 5. 08:38ㆍAlgorithm/with C++
0. 문제
2828번: 사과 담기 게임
상근이는 오락실에서 바구니를 옮기는 오래된 게임을 한다. 스크린은 N칸으로 나누어져 있다. 스크린의 아래쪽에는 M칸을 차지하는 바구니가 있다. (M<N) 플레이어는 게임을 하는 중에 바구니를
www.acmicpc.net
1. 문제 이해
N
,M
,J
를 입력을 저장한다.바구니의 왼쪽
을 중심으로 생각한다.- 바구니의 중심을 기준으로 이동 방향이 왼쪽이면 이동 거리는
abs(사과 - 바구니 중심)
이다.abs()
는cstdlib
에서 제공하는 절댓값을 구하는 함수다. - 바구니의 중심을 기준으로 이동 방향이 오른쪽이면…
(사과 - 바구니 중심)
가M
보다 작다면 움직이지 않음.- 크거나 같으면
사과 - 바구니 중심 - M + 1
이다.
2. 문제 제출
// 백준 2828번: 사과 담기 게임
#include <iostream>
#include <cstdlib>
using namespace std;
int n, m, j, pos=0, ret;
int main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
cin >> n >> m >> j;
for(int i=0; i<j; i++){
int apple;
cin >> apple;
apple--;
bool goLeft = apple < pos;
if(goLeft){
ret += abs(apple - pos);
pos = apple;
}else{
bool notMove = (apple - pos) < m;
if(notMove) continue;
int distance = apple - pos - m +1;
ret += distance;
pos += distance;
}
}
cout << ret << "\n";
return 0;
}
'Algorithm > with C++' 카테고리의 다른 글
[알고리즘] 2870번: 수학숙제 (0) | 2023.09.06 |
---|---|
[알고리즘] 4659번: 비밀번호 발음하기 (0) | 2023.09.05 |
[알고리즘] 2910번: 빈도 정렬 (0) | 2023.09.05 |
[알고리즘] 1992번: 쿼드트리 (0) | 2023.09.03 |
[알고리즘] 3986번: 좋은 단어 (0) | 2023.09.03 |