백준 [18111] "마인크래프트"

Kimbab1004·2024년 2월 24일
0

Algorithm

목록 보기
20/102


마인크래프트문제는 브루트포스 알고리즘을 통해 해결하는 문제이다. 처음 알고리즘 공부를 시작했을때도 어렵게 느꼈던 문제인데 시간이 지나더라도 어려운건 똑같았다. 브루트포스 알고리즘의 이해가 부족하니 전체적으로 문제 풀기가 어려웠다.

#include <iostream>
#include <deque>
#include <string>
#include <sstream>
#include <vector>
#include <string>
#include <queue>
#include <algorithm>
#include <cmath>
#include <cstdlib>

using namespace std;
int n, m, b, a, height;
int minecraft[500][500];

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

	int time = 2147000000;

	cin >> n >> m >> b;

	for (int i = 0; i < n; i++) {
		for (int j = 0; j < m; j++) {
			cin >> minecraft[i][j];
		}
	}

	for (int k = 0; k <= 256; k++) {
		int sum = 0;
		int inventory = b;
		for (int i = 0; i < n; i++) {
			for (int j = 0; j < m; j++) {
				//블록 놓기
				if (minecraft[i][j] < k) {
					sum += k - minecraft[i][j];
					inventory -= k - minecraft[i][j];
				}
				else if (minecraft[i][j] > k) {
					sum += (minecraft[i][j] - k) * 2;
					inventory += minecraft[i][j] - k;
				}
				else if (k == minecraft[i][j]) {
					continue;
				}
			}
		}

		if (inventory >= 0) {
			if (sum <= time) {
				time = sum;
				height = k;
			}
		}
	}

	cout << time<<" " << height;

	return 0;

}

0개의 댓글