Algorithm

[๋ฐฑ์ค€] 18111๋ฒˆ - ๋งˆ์ธํฌ๋ž˜ํ”„ํŠธ (C++)

2024. 11. 26. 22:18

https://www.acmicpc.net/problem/18111

 

 

ํ’€์ด๊ณผ์ •

ํ•ด๋‹น ๋ฌธ์ œ์—์„œ ์‹ ๊ฒฝ์จ์•ผํ–ˆ๋˜ ๋ถ€๋ถ„์€ ์ด์™€ ๊ฐ™๋‹ค.

1. โ€˜๋•… ๊ณ ๋ฅด๊ธฐโ€™ ์ž‘์—…์— ๊ฑธ๋ฆฌ๋Š” ์ตœ์†Œ ์‹œ๊ฐ„๊ณผ ๊ทธ ๊ฒฝ์šฐ ๋•…์˜ ๋†’์ด๋ฅผ ์ถœ๋ ฅํ•˜์‹œ์˜ค.

2. ๋•…์˜ ๋†’์ด๋Š” 256๋ธ”๋ก์„ ์ดˆ๊ณผํ•  ์ˆ˜ ์—†์œผ๋ฉฐ, ์Œ์ˆ˜๊ฐ€ ๋  ์ˆ˜ ์—†๋‹ค.

3. ๋‹ต์ด ์—ฌ๋Ÿฌ ๊ฐœ ์žˆ๋‹ค๋ฉด ๊ทธ์ค‘์—์„œ ๋•…์˜ ๋†’์ด๊ฐ€ ๊ฐ€์žฅ ๋†’์€ ๊ฒƒ์„ ์ถœ๋ ฅํ•˜์‹œ์˜ค.

 

๋ฌธ์ œ์—์„œ๋Š” ๋•… ๊ณ ๋ฅด๊ธฐ๋ฅผ ํ•˜๋ฉด์„œ ๊ฑธ๋ฆฌ๋Š” ์ตœ์†Œ์‹œ๊ฐ„๊ณผ ๊ทธ ๋•…์˜ ๋†’์ด๋ฅผ ๊ตฌํ•ด์•ผํ•œ๋‹ค๊ณ ํ–ˆ๋‹ค.

๋•…์˜ ๋†’์ด์˜ ๋ฒ”์œ„๊ฐ€ 0 ~ 256 ๊นŒ์ง€๋กœ ์ ์€ ๋ฒ”์œ„ ๋‚ด์— ์ œํ•œ์ด ๋˜์–ด์žˆ์œผ๋‹ˆ ๋ชจ๋“  ๋•… ๋†’์ด๋ฅผ ๋ฐ˜๋ณต๋ฌธ์„ ๋Œ๋ฉฐ, targetHeight๋ฅผ ๊ธฐ์ค€์˜ ๋†’์ด๋กœ ๋ชจ๋“  ๋•…์„ ๋งŒ๋“ค์–ด๋ณด๊ณ  ๋ธ”๋Ÿญ๊ฐœ์ˆ˜๋‚ด์— ๊ฐ€๋Šฅํ•œ์ง€, ์‹œ๊ฐ„์ด ๊ฐ€์žฅ ์ ์€์ง€๋ฅผ ํ™•์ธํ•˜๋ฉฐ ๊ฒฐ๊ณผ๊ฐ’์„ ๊ตฌํ•˜์˜€๋‹ค.

 

code

#include <iostream>
#include <unordered_map>
#include <algorithm>
#include <climits>

using namespace std;

int main() {

	int n, m, b, land;

	cin >> n >> m >> b;

	unordered_map<int, int> frequency;
	for (int i = 0; i < n * m; i++) {
		cin >> land;
		frequency[land]++;
	}

	int inventory, time;
	int minTime = INT_MAX, bestHigh = 0;
	for (int targetHeight = 0; targetHeight <= 256; targetHeight++) {
		time = 0;
		inventory = b;

		for(const auto& [height, freq] : frequency) {
			if (height < targetHeight) {
				int blocksNeeded = (targetHeight - height) * freq;
				inventory -= blocksNeeded;
				time += blocksNeeded;
			} else if (height > targetHeight) {
				int blocksRemoved = (height - targetHeight) * freq;
				inventory += blocksRemoved;
				time += blocksRemoved * 2;
			}
		}

		if (0 <= inventory) {
			if (minTime > time || (minTime == time && bestHigh < targetHeight)) {
				minTime = time;
				bestHigh = targetHeight;
			}
		}
	}
	cout << minTime << " " << bestHigh;

	return 0;
}

 

 

ํ›„๊ธฐ

์ฒ˜์Œ์—๋Š” ์‹œ๊ฐ„์„ ์ตœ๋Œ€ํ•œ ์ ˆ์•ฝํ•˜๊ณ  ์‹ถ์–ด์„œ ํ˜„์žฌ ๊ฐ’์œผ๋กœ ๋“ค์–ด์˜จ ๋•…๋“ค์„ ๋ฐ”ํƒ•์œผ๋กœ ์ •๋ ฌ ํ›„ ๋ฐ˜๋ณต๋ฌธ์„ ๋Œ๋ ธ์—ˆ๋Š”๋ฐ. ๋กœ์ง์ด ํ›จ์”ฌ ๋ณต์žกํ•ด์ง€๊ณ ,
๋ฐ˜๋ก€๋“ค๋„ ์ƒ๋‹นํžˆ ๋งŽ์•˜์—ˆ๋‹ค.

๋ฌธ์ œ์˜ ์ ‘๊ทผ ๋ฐฉ์‹์„ ๋‹ค๋ฅด๊ฒŒ ์ƒ๊ฐํ•˜๋Š” ๋Šฅ๋ ฅ์„ ๊ธธ๋Ÿฌ์•ผํ•˜๋Š”๊ฑฐ ๊ฐ™๋‹ค.

์ €์ž‘์žํ‘œ์‹œ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'Algorithm' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[๋ฐฑ์ค€] 15829๋ฒˆ - Hashing (C++)  (1) 2024.11.11
[๋ฐฑ์ค€] 2108๋ฒˆ - ํ†ต๊ณ„ํ•™ (C++)  (0) 2024.11.10
  1.  
  2. ํ’€์ด๊ณผ์ •
  3.  
  4. code
  5.  
  6. ํ›„๊ธฐ
moaoh
moaoh
๋‚˜์˜ ์„ฑ์žฅ ์ผ๊ธฐ.
moaoh
๐Ÿถ ๐Ÿพ
moaoh
์ „์ฒด
์˜ค๋Š˜
์–ด์ œ
  • Github
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ
    • Algorithm
      • ๊ฐœ๋…์ •๋ฆฌ
      • ๋ฌธ์ œํ’€์ด
    • 42seoul
      • projects
    • CS
    • programming language
      • C++
      • Javascript
      • Go
      • Python
      • Front-end
      • Java
    • Java Spring
    • git
    • ์ผ์ƒ
      • ์ฑ… ์ฝ๊ธฐ

์ตœ๊ทผ ๊ธ€

hELLO ยท Designed By ์ •์ƒ์šฐ
moaoh
[๋ฐฑ์ค€] 18111๋ฒˆ - ๋งˆ์ธํฌ๋ž˜ํ”„ํŠธ (C++)
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”

๋‹จ์ถ•ํ‚ค

๋‚ด ๋ธ”๋กœ๊ทธ

๋‚ด ๋ธ”๋กœ๊ทธ - ๊ด€๋ฆฌ์ž ํ™ˆ ์ „ํ™˜
Q
Q
์ƒˆ ๊ธ€ ์“ฐ๊ธฐ
W
W

๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๊ธ€

๊ธ€ ์ˆ˜์ • (๊ถŒํ•œ ์žˆ๋Š” ๊ฒฝ์šฐ)
E
E
๋Œ“๊ธ€ ์˜์—ญ์œผ๋กœ ์ด๋™
C
C

๋ชจ๋“  ์˜์—ญ

์ด ํŽ˜์ด์ง€์˜ URL ๋ณต์‚ฌ
S
S
๋งจ ์œ„๋กœ ์ด๋™
T
T
ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ ์ด๋™
H
H
๋‹จ์ถ•ํ‚ค ์•ˆ๋‚ด
Shift + /
โ‡ง + /

* ๋‹จ์ถ•ํ‚ค๋Š” ํ•œ๊ธ€/์˜๋ฌธ ๋Œ€์†Œ๋ฌธ์ž๋กœ ์ด์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ‹ฐ์Šคํ† ๋ฆฌ ๊ธฐ๋ณธ ๋„๋ฉ”์ธ์—์„œ๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.