문제풀이(Problem Solving)

백준, BOJ, 1741번, 단어 뒤집기2 C++ [CPP] ★★★

게임이 더 좋아 2022. 7. 30. 09:55
반응형
728x170

이 문제는 스택에 관한 예외처리를 하는데 도움이 된다.

순서를 잘 생각해야 하는 문제다.

대충 답을 끼워맞춘 느낌이고

코드가 정제되지 않았지만 이런 식으로 푸는 듯 하다.

 

https://www.acmicpc.net/problem/17413

 


 

 

#맞은 풀이

#include <bits/stdc++.h>

using namespace std;


stack <char> stk;
string s;

int main(){
    
    //띄어쓰기 포함 모든 문자열을 받아야함
    getline(cin, s);
    
    bool isTagging = false;
    
    //Tagging 중일 때, 아닐 때
    //공백을 만났을 때, 아닐 때
    
    
    for(char c : s){
        if(c == '<'){
            while(!stk.empty()){
                char w = stk.top();
                stk.pop();
                cout << w;
            }            
            cout << c;
            isTagging = true;
            continue;
        }else if(c == '>'){
            cout << c;
            isTagging = false;
            continue;
        }
        
        if(isTagging){
            cout << c;
        }
        else{
            if(c == ' '){
                while(!stk.empty()){
                    char w = stk.top();
                    stk.pop();
                    cout << w;
                }
                cout << c;
            }else{
                stk.push(c);
            }
        }
    }
    
    //끝났다면 스택 비움
    while(!stk.empty()){
        char w = stk.top();
        stk.pop();
        cout << w;
    }

    return 0;
}

 

쉽지만 재미있다.

스택의 의미가 꺼낼 때 역순이란 것을 이용한 좋은 문제다.

 

728x90
반응형
그리드형