관리 메뉴

어읽로꾸거

BOJ 5397 키로거 본문

알고리즘

BOJ 5397 키로거

어읽로꾸거 2019. 4. 5. 21:42

백준 5397 링크

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

풀이 방법

스택 2개를 구성하여 왼쪽 스택, 오른쪽 스택을 구성합니다
한 글자씩 입력을 받아 왼쪽 스택에 넣어주고, 방향이나 백 스페이스 기호는 따로 처리하여 줍니다.

 

  1.  1. '<' 의 경우엔 왼쪽의 스택에서 빼서 오른쪽의 스택에 넣어줍니다.

  2.  
  3.  2. '>' 의 경우엔 오른쪽의 스택에서 빼서 왼쪽의 스택에 넣어줍니다.

  4.  
  5.  3. '-' 의 경우엔 왼쪽의 스택에서 하나 빼줍니다.

입력이 끝나면 왼쪽의 스택에서 모두 빼서 오른쪽에 넣어줍니다.

 

그리고 오른쪽에서 하나씩 빼면서 출력해주면 끝! 😎

 

Linked List를 이용한 풀이 : https://chika.tk/14

코드

#include<iostream>
#include<stack>
using namespace std;
int main() {
    //freopen("input.txt", "r", stdin);
    int n; scanf("%d", &n); getchar();
    while (n--) {
        stack <char> l, r;
        char c;
        scanf("%c", &c);
        while (c != '\n') {
            if (c == '<') {
                if (!l.empty()) {
                    r.push(l.top());
                    l.pop();
                }
            }
            else if (c == '>') {
                if (!r.empty()) {
                    l.push(r.top());
                    r.pop();
                }
            }
            else if (c == '-') {
                if (!l.empty()) {
                    l.pop();
                }
            }
            else {
                l.push(c);
            }
            if (scanf("%c", &c) == -1)
                break;
        }
        while (!l.empty()) {
            r.push(l.top());
            l.pop();
        }
        while (!r.empty()) {
            printf("%c", r.top());
            r.pop();
        }
        printf("\n");
    }
}

'알고리즘' 카테고리의 다른 글

BOJ 1068 트리  (0) 2019.04.07
BOJ 16785 ソーシャルゲーム  (0) 2019.04.07
BOJ 5558 チーズ  (0) 2019.04.05
BOJ 2975 Transactions  (0) 2019.04.02
BOJ 4287 Word Ratios  (0) 2019.04.01