๐Ÿ™‡โ€โ™€๏ธ[Gold V] ๋น—๋ฌผ - 14719

๋ฌธ์ œ ๋งํฌ

์„ฑ๋Šฅ ์š”์•ฝ

๋ฉ”๋ชจ๋ฆฌ: 2020 KB, ์‹œ๊ฐ„: 0 ms

๋ถ„๋ฅ˜

๊ตฌํ˜„, ์‹œ๋ฎฌ๋ ˆ์ด์…˜

์ œ์ถœ ์ผ์ž

2024๋…„ 2์›” 18์ผ 18:44:20

๋ฌธ์ œ ์„ค๋ช…

2์ฐจ์› ์„ธ๊ณ„์— ๋ธ”๋ก์ด ์Œ“์—ฌ์žˆ๋‹ค. ๋น„๊ฐ€ ์˜ค๋ฉด ๋ธ”๋ก ์‚ฌ์ด์— ๋น—๋ฌผ์ด ๊ณ ์ธ๋‹ค.

๋น„๋Š” ์ถฉ๋ถ„ํžˆ ๋งŽ์ด ์˜จ๋‹ค. ๊ณ ์ด๋Š” ๋น—๋ฌผ์˜ ์ด๋Ÿ‰์€ ์–ผ๋งˆ์ผ๊นŒ?

์ž…๋ ฅ

์ฒซ ๋ฒˆ์งธ ์ค„์—๋Š” 2์ฐจ์› ์„ธ๊ณ„์˜ ์„ธ๋กœ ๊ธธ์ด H๊ณผ 2์ฐจ์› ์„ธ๊ณ„์˜ ๊ฐ€๋กœ ๊ธธ์ด W๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. (1 โ‰ค H, W โ‰ค 500)

๋‘ ๋ฒˆ์งธ ์ค„์—๋Š” ๋ธ”๋ก์ด ์Œ“์ธ ๋†’์ด๋ฅผ ์˜๋ฏธํ•˜๋Š” 0์ด์ƒ H์ดํ•˜์˜ ์ •์ˆ˜๊ฐ€ 2์ฐจ์› ์„ธ๊ณ„์˜ ๋งจ ์™ผ์ชฝ ์œ„์น˜๋ถ€ํ„ฐ ์ฐจ๋ก€๋Œ€๋กœ W๊ฐœ ์ฃผ์–ด์ง„๋‹ค.

๋”ฐ๋ผ์„œ ๋ธ”๋ก ๋‚ด๋ถ€์˜ ๋นˆ ๊ณต๊ฐ„์ด ์ƒ๊ธธ ์ˆ˜ ์—†๋‹ค. ๋˜ 2์ฐจ์› ์„ธ๊ณ„์˜ ๋ฐ”๋‹ฅ์€ ํ•ญ์ƒ ๋ง‰ํ˜€์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์—ฌ๋„ ์ข‹๋‹ค.

์ถœ๋ ฅ

2์ฐจ์› ์„ธ๊ณ„์—์„œ๋Š” ํ•œ ์นธ์˜ ์šฉ๋Ÿ‰์€ 1์ด๋‹ค. ๊ณ ์ด๋Š” ๋น—๋ฌผ์˜ ์ด๋Ÿ‰์„ ์ถœ๋ ฅํ•˜์—ฌ๋ผ.

๋น—๋ฌผ์ด ์ „ํ˜€ ๊ณ ์ด์ง€ ์•Š์„ ๊ฒฝ์šฐ 0์„ ์ถœ๋ ฅํ•˜์—ฌ๋ผ.

๐Ÿš€ํ’€์ด

๋ฌผ์ด ์ฐจ๋Š” ์ •๋„๋ฅผ ์•Œ๊ธฐ ์œ„ํ•ด์„œ ํ•ด๋‹น ์œ„์น˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์™ผ์ชฝ, ์˜ค๋ฅธ์ชฝ์„ ํƒ์ƒ‰ํ•ด์•ผํ•œ๋‹ค.

์™ผ์ชฝ์œผ๋กœ ํƒ์ƒ‰ํ•  ๋–„ ์ž๊ธฐ๋ณด๋‹ค ๋†’์€ ํƒ‘์ด ์–ผ๋งˆ์ธ์ง€, ์˜ค๋ฅธ์ชฝ์œผ๋กœ ํƒ์ƒ‰ํ•  ๋•Œ ์ž๊ธฐ ๋ณด๋‹ค ๋†’์€ ํƒ‘์ด ์–ผ๋งˆ์ธ์ง€ ๊ตฌํ•œ๋‹ค.

์ด ๋–„ ์ž์‹ ๋ณด๋‹ค ๋†’์€ ํƒ‘์ด ์—†๋‹ค๋ฉด ๋น—๋ฌผ์ด ๊ณ ์ผ ์ˆ˜ ์—†๋‹ค.

์ž์‹ ๋ณด๋‹ค ๋†’์€ ํƒ‘์ด ์žˆ์„ ๊ฒฝ์šฐ ์™ผ์ชฝ ์˜ค๋ฅธ ์ชฝ ๋‘˜ ๋‹ค ๋†’์•„์•ผํ•œ๋‹ค.

๋‘˜ ๋‹ค ๋†’์„ ๋•Œ ๊ทธ ์ค‘ ๋‚ฎ์€ ํƒ‘์„ ๊ธฐ์ค€์œผ๋กœ ๋น—๋ฌผ์ด ๊ณ ์ธ๋‹ค.

์ด ๋•Œ ๊ณ ์ธ ๋น—๋ฌผ์˜ ์–‘์€ ๋‚ฎ์€ ํƒ‘ ๋†’์ด์—์„œ ์ž์‹ ์˜ ํƒ‘ ๋†’์ด์˜ ์ฐจ์ด์ด๋‹ค.

์ด๊ฑธ ์ด์šฉํ•ด์„œ ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

int h, w;
vector<int> rains;
void solve()
{
	cin >> h >> w;
	rains = vector<int>(w);
	for (int i = 0; i < w; ++i)
	{
		cin >> rains[i];
	}

	int res = 0;
	for (int i = 1; i < w - 1; ++i)
	{
		int left = 0, right = 0;
		
		for (int j = 0; j < i; ++j)
		{
			left = max(left, rains[j]);
		}

		for (int j = w - 1; j > i; --j)
		{
			right = max(right, rains[j]);
		}

		res += max(0, min(left, right) - rains[i]);
	}

	cout << res;
}

๐Ÿš€์ „์ฒด ์ฝ”๋“œ

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include<iostream>
#include <fstream>
#include <vector>
#include <algorithm>
#include <math.h>

using namespace std;

int h, w;
vector<int> rains;
void solve()
{
	cin >> h >> w;
	rains = vector<int>(w);
	for (int i = 0; i < w; ++i)
	{
		cin >> rains[i];
	}

	int res = 0;
	for (int i = 1; i < w - 1; ++i)
	{
		int left = 0, right = 0;
		
		for (int j = 0; j < i; ++j)
		{
			left = max(left, rains[j]);
		}

		for (int j = w - 1; j > i; --j)
		{
			right = max(right, rains[j]);
		}

		res += max(0, min(left, right) - rains[i]);
	}

	cout << res;
}

int main() 
{
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);
	//freopen("input.txt", "rt", stdin);

	solve();

	return 0;
}

ํƒœ๊ทธ:

์นดํ…Œ๊ณ ๋ฆฌ:

์—…๋ฐ์ดํŠธ: