본문 바로가기

백준

16654 Generalized German Quotation

영어라 문제 대충 읽고 풀다가 몇 번 틀린 문제ㅋㅋ

 

이게 한번 괄호가 열리면 해당 기호가 고정된다. 

예를 들어 << << >> >> 라고 하면 <<가 스택에 들어온 순간부터 [ 는 <<가 된다. 

이거 깨닫고는 빨리 풀었다.

 

<<<<<<<<>>>><<>>>>>>

 

요런 경우 조심!

 

[ [ [ [ ] ] [ ] ] ]

 

이렇게 되어야 한다.

 

#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
#include <functional>
#include <string>
#include <queue>
#include <deque>
#include <stack>
#include <set>
#include <map>
#include <cmath>
#include <cstring>
#include <bitset>
#include <stdio.h>
#include <math.h>
#include <sstream>

#define xx first
#define yy second
#define all(x) (x).begin(), (x).end()

using namespace std;
using i64 = long long int;
using ii = pair<int, int>;
using iis = pair<int, string>;
using ii64 = pair<i64, i64>;
using iii = tuple<int, int, int>;

int main() {
    string s;
    cin >> s;
    
    if (s.size() % 2 == 1) {
        printf("Keine Loesung\n");
        return 0;
    }
    
    int cnt = 0;
    queue<string> q;
    for (int i = 0; i < s.size(); i += 2) {
        if (s[i] == '<' && s[i + 1] == '<') {
            cnt++;
            q.push("<<");
        }
        else if (s[i] == '>' && s[i + 1] == '>') {
            cnt++;
            q.push(">>");
        }
        else {
            printf("Keine Loesung\n");
            return 0;
        }
    }
    
    if (cnt % 2 == 1) {
        printf("Keine Loesung\n");
        return 0;
    }
    
    // < 하나만 들어오는 경우 미리 막음
    stack<string> st;
    string ans = "";
    for (; !q.empty(); q.pop()) {
        if (st.empty()) {
            st.push(q.front());
            ans += "[";
            continue;
        }
        
        if (q.front() == st.top()) {
            st.push(q.front());
            ans += "[";
            continue;
        }
        
        st.pop();
        ans += "]";
    }
    
    if (!st.empty()) {
        printf("Keine Loesung\n");
        return 0;
    }
    
    cout << ans << "\n";
    
    return 0;
}

'백준' 카테고리의 다른 글

1374 강의실  (0) 2022.06.10
18788 Swapity Swap  (0) 2022.05.22
1183 약속  (0) 2022.05.14
10487 4 thought  (0) 2022.05.14
19952 인성 문제 있어??  (0) 2022.05.14