본문 바로가기
백준 문제풀이

BOJ/2828

by alscks 2024. 1. 8.
사과 담기 게임

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>


int main(void) {

	int N, M, cnt, move = 0;
	scanf("%d %d", &N, &M);
	scanf("%d", &cnt);
	int drop;
	int f = M, r = 1;
	for (int i = 0; i < cnt; i++) {
		scanf("%d", &drop);

		if (drop <= N && drop >= 1) {
			if (drop > f) {
				while (1) {
					if (f == drop) break;
					f++; r++; move++;
				}
			}
			else if (drop < r) {
				while (1) {
					if (r == drop) break;
					f--; r--; move++;
				}
			}
		}
	}
	printf("%d", move);

	return 0;
}​

그리디 알고리즘( Greedy Algorithm ) : 매번 선택에서 가장 최적의 값을 도출하는 것을 목표로 하는 알고리즘.

2828번에서는 가장 적게 바구니가 움직여야 함으로 매번 가장 적은 이동을 목표로 움직여야 함.

-> 떨어지는 공이 바구니 범위 밖이면 바구니의 끝을 떨어지는 공의 위치로 움직이게 하면됨.

 

+while(1)으로 무한루프 문을 짤 때는 탈출조건을 while의 맨 앞줄에 넣는게 바람직 한 것 같다..!

'백준 문제풀이' 카테고리의 다른 글

BOJ/1427  (1) 2024.01.09
BOJ/10989  (2) 2024.01.08
BOJ/10988  (0) 2024.01.07
BOJ/11655  (0) 2024.01.07
BOJ/2816  (0) 2024.01.07