ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [BaekJoon] 17298๋ฒˆ : ์˜คํฐ์ˆ˜
    SW Test/BaekJoon 2021. 7. 19. 22:13
    ๋ฐ˜์‘ํ˜•
    • ์ด ๊ธ€์€ 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;
    }
    • ์ถ”๊ฐ€๋กœ ๊ถ๊ธˆํ•œ ์ ์ด๋‚˜ ์ˆ˜์ •ํ•  ๋ถ€๋ถ„ ์žˆ์œผ๋ฉด ๋Œ“๊ธ€๋กœ ๋‚จ๊ฒจ์ฃผ์„ธ์š”.
    ๋ฐ˜์‘ํ˜•

    'SW Test > BaekJoon' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

    [BaekJoon] 1806๋ฒˆ ๋ถ€๋ถ„ํ•ฉ  (0) 2021.08.22
    [BeakJoon] 5430๋ฒˆ: AC  (0) 2021.07.22
    [BaekJoon] 1697๋ฒˆ : ์ˆจ๋ฐ”๊ผญ์งˆ  (0) 2021.04.23
    [BaekJoon] 4179๋ฒˆ : ๋ถˆ!  (0) 2021.04.23
    [BaekJoon] 7576๋ฒˆ : ํ† ๋งˆํ†   (0) 2021.04.23
Designed by Tistory.