๊ตฌ๋ฆ„ํ†ค ์ฑŒ๋ฆฐ์ง€ 1์ฃผ ์ฐจ ํ•™์Šต ์ผ๊ธฐ - 4
ย - Last update: 2023-08-17

๊ตฌ๋ฆ„ํ†ค ์ฑŒ๋ฆฐ์ง€๋ž€?

๊ตฌ๋ฆ„ ์ด๋ผ๋Š” ๊ณณ์—์„œ ๋ฌธ์ œ ํ’€์ด ์ฑŒ๋ฆฐ์ง€(๊ตฌ๋ฆ„ํ†ค ์ฑŒ๋ฆฐ์ง€)๋ฅผ ํ•œ๋‹ค๊ณ  ํ•ด์„œ ์ฐธ์—ฌ ์ค‘์ด๋‹ค. ์ด๋ฒคํŠธ ๊ธฐ๊ฐ„ ๋™์•ˆ ๋ฌธ์ œ๊ฐ€ ๊พธ์ค€์ด ์˜ฌ๋ผ์˜ค๋ฉฐ, ์ฃผ์— 2ํšŒ์”ฉ (ํ˜น์€ ๊ทธ ์ด์ƒ) ์ฑŒ๋ฆฐ์ง€ ๋ฌธ์ œ๋“ค์— ๋Œ€ํ•ด ํ’€์ด๊ฐ€ ๊ฐ€๋Šฅํ•œ ๋ฌธ์ œ๋“ค์„ ํ’€์ดํ•ด๋ณด๊ณ , ํ›„๊ธฐ๋ฅผ ๋‚จ๊ฒจ๋ณด๋ ค๊ณ  ํ•œ๋‹ค.

๋ฌธ์ œ ํ’€์ด

ํ’€์ด ์ ‘๊ทผ

์ด ๋ฌธ์ œ์˜ ๊ฒฝ์šฐ ์‚ฌ๋žŒ์ด ์™„๋ฒฝํ•œ ํ–„๋ฒ„๊ฑฐ ๋ฅผ ํŒ์ •ํ•œ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•  ์ˆ˜ ์žˆ์„์ง€ ์ƒ๊ฐํ•ด๋ณด๋ฉด ์‰ฝ๋‹ค. ์šฐ์„ , ์ตœ๋Œ€๊ฐ’์„ ์ฐพ๋Š”๋‹ค. ๊ทธ๋ฆฌ๊ณ , ์ตœ๋Œ€๊ฐ’ ์ขŒ/์šฐ์ธก์œผ๋กœ ๊ทธ ๊ฐ’๋ณด๋‹ค ๊ฐ™๊ฑฐ๋‚˜ ์ž‘์€ ๊ฐ’์ด ๊ณ„์†ํ•ด์„œ ๋‚˜์™€์•ผ ํ•œ๋‹ค๋Š” ์‚ฌ์‹ค์„ ๊ด€์ฐฐํ•  ์ˆ˜ ์žˆ๋‹ค.

์ฆ‰, ํˆฌ ํฌ์ธํ„ฐ ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋А๋‚Œ์œผ๋กœ ํ’€๋ฉด ๋˜๋Š” ๋ฌธ์ œ์ด๋ฉฐ, ์‹œ๊ฐ„๋ณต์žก๋„๋Š” O(N)O(N)์ด ๋œ๋‹ค. ์•„์ง Python์ด ์ต์ˆ™ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ด ๋ฌธ์ œ๋Š” ๊ธฐ์กด์ฒ˜๋Ÿผ C++๋กœ ํ’€์ดํ•ด๋ณด์•˜๋‹ค.

์ƒ˜ํ”Œ ์ •๋‹ต ์ฝ”๋“œ

#include <bits/stdc++.h>
using namespace std;
int main() {
int N; scanf("%d", &N);
vector<int> A;
int maxval = 0;
int maxpos = -1;
int sum = 0;
for(int i = 0; i < N; ++i) {
int tmp; scanf("%d", &tmp);
A.push_back(tmp);
sum += tmp;
if (tmp > maxval) {
maxpos = i;
maxval = tmp;
}
}
bool flag = true;
for(int i = maxpos; i >= 1; --i) {
if (A[i - 1] <= A[i]) continue;
flag = false;
}
for(int i = maxpos; i < N - 1; ++i) {
if (A[i] >= A[i + 1]) continue;
flag = false;
}
if (flag) {
printf("%d\n", sum);
} else {
printf("0\n");
}
return 0;
}
๐Ÿท๏ธ ์ฃผ์ œ ๋ชฉ๋ก: