https://www.acmicpc.net/problem/3015
λ¬Έμ
μ€μμμ€μ μ¬κ²°ν© 곡μ°μ Nλͺ μ΄ ν μ€λ‘ μμ κΈ°λ€λ¦¬κ³ μλ€.
μ΄ μμ¬μ μΈ μκ°μ λ§μ΄νκΈ° μν΄ μ€μμμ κΈ°λ€λ¦¬κ³ μλ λ°±μ€μ΄λ κ°μκΈ° μκΈ°κ° λ³Ό μ μλ μ¬λμ μκ° κΆκΈν΄ μ‘λ€.
λ μ¬λ Aμ Bκ° μλ‘ λ³Ό μ μμΌλ €λ©΄, λ μ¬λ μ¬μ΄μ A λλ Bλ³΄λ€ ν€κ° ν° μ¬λμ΄ μμ΄μΌ νλ€.
μ€μ μμλ μ¬λμ ν€κ° μ£Όμ΄μ‘μ λ, μλ‘ λ³Ό μ μλ μμ μλ₯Ό ꡬνλ νλ‘κ·Έλ¨μ μμ±νμμ€.
μ λ ₯
첫째 μ€μ μ€μμ κΈ°λ€λ¦¬κ³ μλ μ¬λμ μ Nμ΄ μ£Όμ΄μ§λ€. (1 ≤ N ≤ 500,000)
λμ§Έ μ€λΆν° Nκ°μ μ€μλ κ° μ¬λμ ν€κ° λλ Έλ―Έν° λ¨μλ‘ μ£Όμ΄μ§λ€. λͺ¨λ μ¬λμ ν€λ 231 λλ Έλ―Έν° λ³΄λ€ μλ€.
μ¬λλ€μ΄ μ μλ μμλλ‘ μ λ ₯μ΄ μ£Όμ΄μ§λ€.
μΆλ ₯
μλ‘ λ³Ό μ μλ μμ μλ₯Ό μΆλ ₯νλ€.
νμ΄1 - μ€ν¨
(λ°λ‘ μλ €μ€.. μ λ°..)
μ²μμ μλν λμ νμ΄..
inputλ€μ 벑ν°λ‘ λ°κ³ μ΄μ€ forλ¬Έμ μ΄μ©ν΄μ νμλλ°
μκΎΈ 9% μμ νλ Έλ€κ³ λμ΄ γ γ γ
#include <iostream>
#include <stack>
#include <vector>
using namespace std;
vector <int> input;
stack <int> s;
long long ans = 0;
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
// μ
λ ₯
int n;
cin >> n;
for(int i=0; i<n; i++){
int tmp;
cin >> tmp;
input.push_back(tmp);
}
// κ³μ°
for(int i=0; i<n; i++){
s.push(0);
for(int j=i+1; j<n; j++){
if(s.top() > input[j]){
break;
}
ans++;
if(input[i] < input[j]){
break;
}
s.push(input[j]);
}
while(!s.empty()) s.pop();
}
// μΆλ ₯
cout << ans;
return 0;
}
μλ¬΄νΌ μ무리 μ΄μ¬ν κ²μνμ λ€μ Έλ΄λ μλΌμ..
λ€λ₯Έ νμ΄λ‘ κ°λ€
νμ΄ 2
μ λ ₯μ λ°λ λμμ μ€νμ λ£μΌλ©΄μ κ³μ°νλ μ€μκ° νμ΄
μκ°λ³΅μ‘λ λ©΄μμλ μ΄κ² λ λ«λ€
λ€λ§ νμ΄κ° μ‘°κΈ. λ§μ΄. 볡μ‘ν λΏ..
μ°μ λͺ¨λ μ λ€μ ν€κ° λ€ λ€λ₯΄λ€κ³ κ°μ ν΄μ κ°λ¨νκ² λ‘μ§μ ꡬμ±νλ€
ν μ€νΈ μΌμ΄μ€λ μμ λ₯Ό μ΄μ§ λ³νν΄μ "6 2 4 1 2 5 1" μ λ£μ΄ λ΅ 7μ΄ λμ€λ©΄ λ¨
// Authored by : seondal
// Co-authored by : -
//#include <bits/stdc++.h>
#include <iostream>
#include <stack>
using namespace std;
stack<int> s;
long long ans;
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
int n;
cin >> n;
while(n--){
int h;
cin >> h;
// (2)
while(!s.empty() && s.top().first < h){
s.pop();
ans++;
}
// (1)
if(!s.empty()) ans++;
s.push(h);
}
cout << ans;
return 0;
}
/*
*/
λ‘μ§μ μ€λͺ ν΄λ³΄κ² λ€
μ°¨λ‘λλ‘ κ°μ μ λ ₯λ°μμ μ€νμ λ£μΌλ©° μμ λ§λλλ°,
μ λ ₯κ°μ΄ μμ μλ κ°κ³Ό μ μ΄νλ©΄ νλμ μμ΄ μμ±λλκ±°λΌκ³ μκ°νλ©΄ νΈνλ€
(ex. top=2 μΌλ 4λ₯Ό λ£μΌλ©΄ 2μ4 νμμ΄ λ§λ€μ΄μ§)
κ·Έλ¦¬κ³ νμμ΄ μμ±λ λλ§λ€ ans++;
(1)
κ·Έλμ λΉμ΄μμ§ μμ μ€νμ κ°μ λ£μλλ§λ€ ans++
μ€νμ΄ λΉμ΄μλ€λ©΄ λ§λλ μ κ° μμΌλ―λ‘ μμ΄ μλ§λ€μ΄μ‘μΌλκΉ ans μ¦κ°μν€μ§ μκ³ κ·Έλ₯ push
(2)
μ΄λ λ£μΌλ €λ κ°λ³΄λ€ κΌλκΈ° κ°μ΄ λ μλ€λ©΄ μ§κΈ λ£μΌλ €λ μ λ κΌλκΈ° κ° λ°μ μλ μ λ λ³Ό μ μμκ±°λ€
λ°λΌμ μμ λ³΄λ€ μμ κΌλκΈ°κ°λ€μ whileλ‘ κ³μ κΊΌλΌ (pop)건λ°,
μ΄λ κΊΌλ΄μ§λ μ λ€λ λ€ μ§κΈ λ£μΌλ €λ μ μ μμ΄ λ§λ€μ΄μ§κΈ° λλ¬Έμ ans++
μνμΌλ λ€μλ¨κ³λ‘ λμ΄κ°λ³΄μ
ν€κ° κ°μ μ λ€μ΄ μλκ²½μ°, κ·Έ μ λ€μ νλλ‘ μ·¨κΈνλ€. (μ€λ³΅μ μΈμ νμ§ μμ)
κ·Όλ° κ³μ°μ ν΄μΌνκΈ° λλ¬Έμ ans μΉ΄μ΄νΈλ₯Ό μ°μμΌλ‘ μ€λ³΅λ μ λ€ μ λ§νΌ λν΄μ£Όλ λ°©μμΌλ‘ μ§ννλ€
μ°μμΌλ‘ μ€λ³΅λ μ λ€ μλ₯Ό νννκΈ° μν΄ pair<int, int> λ₯Ό μ΄μ©νμ¬ μ²«λ²μ§Έλ ν€λ₯Ό, λλ²μ§Έλ μ°μ μ€λ³΅ μλ₯Ό νννκΈ°λ‘ νλ€.
(1) popμ ν λ ansλ₯Ό νλμ© μ¦κ°μν€μ§ μκ³ κΌλκΈ°μ μ°μ μ€λ³΅ μ λ§νΌ μ¦κ°μν¨λ€.
(2) λ£μΌλ €λ μ μ κΌλκΈ° μ ν€κ° κ°λ€λ©΄,
(3) λ€μ΄κ°λ μ λ μμ κ³Ό κ°μ ν€μ μ μμ μμ μ΄λ£¨κ³ μμΌλ―λ‘ κΌλκΈ° μ μ second κ°μ ++ ν΄μ€λ€. (μ°μ μ€λ³΅ μ μ¦κ°)
(4) κ·Έλ¦¬κ³ κ·Έ μ μ μμ κ³Ό κ°μ ν€μΈ μ λ€κ³Όλ μμ μ΄λ£¨λ―λ‘ ans λ₯Ό μ°μ μ€λ³΅ μλ§νΌ μ¦κ°
(5) κ·Όλ° λ£μΌλ©΄μ κ°μν€λ€ λ€μ ν° ν€ νλκ° μλ€λ©΄ κ±λ μμ μ΄λ£¨λ―λ‘ ans++;
// Authored by : seondal
// Co-authored by : -
//#include <bits/stdc++.h>
#include <iostream>
#include <stack>
using namespace std;
stack<pair<int, int>> s;
long long ans;
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
int n;
cin >> n;
while(n--){
int h;
cin >> h;
// (1)
while(!s.empty() && s.top().first < h){
ans += s.top().second;
s.pop();
}
// (2)
if(!s.empty() && s.top().first == h) {
ans += s.top().second; //(4)
s.top().second++; //(3)
// (5)
if(s.size() > 1) ans++;
continue;
}
if(!s.empty()) ans++;
s.push({h,1});
}
cout << ans;
return 0;
}
/*
*/
λ!
λ΄μΈμ 첫 Gold1!!
μκ³ νλ€!!!
'π Baaaaaarking > 0x05κ° - μ€ν' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[BOJ G4][C++] λ°±μ€ 17298λ²: μ€ν°μ (1) | 2022.02.13 |
---|---|
[BOJ G5][C++] λ°±μ€ 6198λ²: μ₯μ μ μ κΎΈλ―ΈκΈ° (0) | 2022.02.13 |
[BOJ G5][C++] λ°±μ€ 2493λ²: ν (0) | 2022.02.12 |
[BOJ][C++] 1874λ² : μ€ν μμ΄ (0) | 2022.01.08 |
[BOJ][C++] λ°±μ€ 10773λ² : μ λ‘ (0) | 2022.01.06 |