[백준] 2828 사과 담기 게임

0

백준

목록 보기
228/271
post-thumbnail

[백준] 2828 사과 담기 게임

#include <iostream>
#include <algorithm>
using namespace std;

int main() {
	ios_base::sync_with_stdio(false);
	cin.tie(NULL); cout.tie(NULL);


	int N, M, j;
	cin >> N >> M >> j;

	int left = 1; //바구니의 왼쪽 끝
	int right = M; //바구니의 오른쪽 끝
	int move = 0;

	while (j--) {
		int apple;
		cin >> apple;

		while ((left >= 1) && (right <= N)) {
			if ((left <= apple) && (apple <= right)) break;

			//바구니 왼쪽으로 이동
			if (apple < left) {
				left--;
				right--;
			}
			//바구니 오른쪽으로 이동
			else if (apple > right) {
				left++;
				right++;
			}
			move++;
		}
	}
	cout << move;
	return 0;
}

3년 전 코드

#include <stdio.h>
#pragma warning(disable:4996)

int main() {
	int n, m;
	scanf("%d %d", &n, &m);
	int k;
	scanf("%d", &k);
	
	//바구니
	int left = 1; int right = m;
	int sum = 0;
	
	//사과
	for (int i = 0; i < k; i++) {
		int apple, move;
		scanf("%d", &apple);

		//상자 안
		if (left <= apple && apple <= right) move = 0;

		//상자보다 왼쪽-> 상자 이동
		else if (apple < left) {
			move = (left - apple);
			left -= move;
			right -= move;
		}
		//상자보다 오른쪽-> 상자이동
		else if (right < apple) {
			move = (apple - right);
			left += move;
			right += move;
		}

		sum += move;
	}

	printf("%d", sum);
	return 0;
}

profile
Be able to be vulnerable, in search of truth

0개의 댓글