์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- Spring
- OS
- ๋ฌธ์์ด
- ์ด๋ถ ํ์
- dfs
- error
- ๊ตฌํ
- JPA
- CVE
- thymeleaf
- ๋์ ํฉ
- ์์ ์ ๋ ฌ
- ๋ถํ ์ ๋ณต
- ์ต๋จ ๊ฒฝ๋ก
- ๊ทธ๋ฆฌ๋
- ๋ฐ์ดํฌ์คํธ๋ผ
- java
- BFS
- ์ฐ์ ์์ ํ
- GCP
- c++
- ์ฌ๊ท
- ์คํ
- dynamic debugging
- DP
- ์๋ฎฌ๋ ์ด์
- ๋ฐฑํธ๋ํน
- Reversing
- ๋งต
- web
- Today
- Total
hades
[Baekjoon] 6198๋ฒ: ์ฅ์ ์ ์ ๊พธ๋ฏธ๊ธฐ ๋ณธ๋ฌธ
๐ฅ ๋ฌธ์
https://www.acmicpc.net/problem/6198
๐ ์ค๊ณ
์ฒ์์๋ ๋ฒกํฐ์ ๋์ด๋ค์ ๋ชจ๋ ์ ์ฅํ๊ณ , ์ด์ค ๋ฐ๋ณต๋ฌธ์ ์ํํ๋ ค๊ณ ํ์ผ๋, ์๊ฐ ๋ณต์ก๋ O(N^2)์ ์ํด ์๊ฐ ์ด๊ณผ๊ฐ ๋ฐ์ํ ๊ฒ์ด๋ค.
๊ฑด๋ฌผ ๊ด๋ฆฌ์ธ๋ค์ ์ค๋ฅธ์ชฝ๋ง ๋ณด๊ธฐ ๋๋ฌธ์, ๋ฐ๋ณต๋ฌธ์ผ๋ก ๊ฑด๋ฌผ ํ๋์ ๋์ด๋ฅผ ๊ณ ๋ คํ๋ฉด์, ์คํ์ ๊ทธ ๊ฑด๋ฌผ์ ๋ณผ ์ ์๋ ๋ค๋ฅธ ๊ฑด๋ฌผ๋ค์ ์ ์ฅํ๋ค.
๋ง์ฝ, ์๋ก์ด ๊ฑด๋ฌผ์ ๋์ด๋ณด๋ค ๊ทธ ์ ์ ์๋ ๊ฑด๋ฌผ์ ๋์ด๊ฐ ๋ฎ๊ฑฐ๋ ๊ฐ๋ค๋ฉด, ์๋ก์ด ๊ฑด๋ฌผ๊ณผ ์ดํ์ ๋์ค๋ ๊ฑด๋ฌผ๋ค์ ๋ณผ ์ ์์ผ๋ฏ๋ก ์ด์ ๊ฒฐ๊ณผ์ ์ํฅ์ ์ฃผ์ง ์๊ธฐ ๋๋ฌธ์ ์ง์ด๋ค.
๋ง์ฝ, ์๋ก์ด ๊ฑด๋ฌผ์ ๋์ด๋ณด๋ค ๊ทธ ์ ์ ์๋ ๊ฑด๋ฌผ์ ๋์ด๊ฐ ๋๋ค๋ฉด, ๊ทธ ๊ฑด๋ฌผ์์ ์๋ก์ด ๊ฑด๋ฌผ์ ๋ณผ ์ ์์ผ๋ฏ๋ก ์คํ์ ์๋ ๊ฑด๋ฌผ์ ๊ฐ์๋ฅผ ์ถ๊ฐํ๋ค.
๐ ํ์ด
#include <iostream>
#include <vector>
#include <stack>
#include <algorithm>
using namespace std;
int n, h;
long long result = 0;
stack<int> s;
int main(void)
{
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
cin >> n;
for (int i = 0; i < n; i++) {
cin >> h;
while (!s.empty() && s.top() <= h) {
s.pop();
}
if (s.empty()) {
s.push(h);
}
else if (s.top() > h) {
result += s.size();
s.push(h);
}
}
cout << result << "\n";
return 0;
}
๐ ๋ฉ๋ชจ
๋ชจ๋ ๋ด๋ฆผ์ฐจ์์ผ๋ก ๋์ด์๋ ๊ฒฝ์ฐ, 79999 + 79998 + ... + 1 = 80000 * 40000์ผ๋ก int ๋ฒ์๋ฅผ ์ด๊ณผํ ์ ์๋ค.
'๐ PS > Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Baekjoon] 1562๋ฒ: ๊ณ๋จ ์ (0) | 2024.09.16 |
---|---|
[Baekjoon] 1509๋ฒ: ํฐ๋ฆฐ๋๋กฌ ๋ถํ (0) | 2024.09.15 |
[Baekjoon] 15486๋ฒ: ํด์ฌ 2 (0) | 2024.09.10 |
[Baekjoon] 30805๋ฒ: ์ฌ์ ์ ์ต๋ ๊ณตํต ๋ถ๋ถ ์์ด (0) | 2024.09.09 |
[Baekjoon] 16236๋ฒ: ์๊ธฐ ์์ด (0) | 2024.09.07 |