- ์ด ๊ธ์ c++๋ก ํ์ด๋ฅผ ์์ฑํ์์ต๋๋ค.
๋ฌธ์
์์
ํ์ด
- ์ฒ์ ๋ฌธ์ ๋ฅผ ๋ณด๋ฉด ๋ ์ค๋ฅด๋ ํ์ด๋ O(n2)๋ฐฉ๋ฒ์ผ๋ก 2์ค for๋ฌธ์ผ๋ก ์ ์ฒด ํ์ํ๋ฉด์ ๋น๊ตํ๋ ๋ฐฉ๋ฒ์
๋๋ค.
- ํ์ง๋ง, ์ด ๋ฌธ์ ๋ ๊ฒฝ์ฐ์ ์๊ฐ 1,000,000์ด๊ธฐ ๋๋ฌธ์ ๋น์ฐํ ์๊ฐ์ด๊ณผ๊ฐ ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํด์ผํฉ๋๋ค.
- stack์ ํ์ฉํ๋ฉด O(n)์ผ๋ก ํ์ด๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
#include <iostream>
#include <stack>
#include <vector>
using namespace std;
int main() {
// your code goes here
int num;
cin>>num;
vector<int> vec;
for(int i=0;i<num;i++){
int n;
cin>>n;
vec.push_back(n);
}
stack<int> s;
for(int i=vec.size()-1;i>0;i--){
s.push(vec[i]);
}
int data = vec[0];
int index = 0;
int cnt = 0;
while(!s.empty()){
if(data<s.top()){
for(int i=0;i<=cnt;i++){
cout<<s.top()<<' ';
}
s.pop();
data = vec[++index];
cnt = 0;
}else{
s.pop();
cnt++;
}
}
cout<<-1;
return 0;
}
- ์ถ๊ฐ๋ก ๊ถ๊ธํ ์ ์ด๋ ์์ ํ ๋ถ๋ถ ์์ผ๋ฉด ๋๊ธ๋ก ๋จ๊ฒจ์ฃผ์ธ์.