-
[BOJ 2828, C++] 사과 담기 게임알고리즘/BOJ 2021. 7. 27. 23:58반응형
https://www.acmicpc.net/problem/2828
풀이
사과가 떨어지는 곳은 3가지 경우로 나누어서 확인할 수 있다.
1. 사과의 좌표가 바구니 왼쪽 끝보다 왼쪽에 있을 때
2. 사과의 좌표가 바구니 범위 안에 있을 때
3. 사과의 좌표가 바구니 오른쪽 끝보다 오른쪽에 있을 때
1번의 경우에는 바구니 왼쪽 끝을 사과의 좌표로 옮기면 되고, 2번의 경우엔 굳이 움직이지 않아도 된다.
3번의 경우에는 바구니의 오른쪽 끝을 사과의 좌표로 옮겨주면 된다.
이렇게해서 바구니의 왼쪽 끝과 오른쪽 끝의 좌표를 변수로 두어서 사과의 좌표가 주어질 때마다 업데이트해주면 된다.
코드
1234567891011121314151617181920212223242526272829303132#include <iostream>#include <cstring>using namespace std;using ll = long long;int main() {ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int n, m, j;cin >> n >> m;cin >> j;int x = 1, y = m, ans = 0, d;for (int i = 0; i < j; i++) {cin >> d;if (d < x) {ans += x - d;y -= (x - d);x = d;}if (d > y) {ans += d - y;x += d - y;y = d;}}cout << ans << endl;}cs 반응형'알고리즘 > BOJ' 카테고리의 다른 글
[BOJ 1439, Python 3] 뒤집기 (0) 2021.07.28 [BOJ 1343, Python 3] 폴리오미노 (0) 2021.07.28 [BOJ 18238, Python 3] ZOAC 2 (0) 2021.07.27 [BOJ 14659, C++] 한조서열정리하고옴ㅋㅋ (0) 2021.07.26 [BOJ 5585, C++] 거스름돈 (0) 2021.07.26