BOJ 14719. ๋น๋ฌผ
๐โโ๏ธ[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;
}