티스토리 뷰

반응형

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

 

5397번: 키로거

첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 한줄로 이루어져 있고, 강산이가 입력한 순서대로 길이가 L인 문자열이 주어진다. (1 ≤ L ≤ 1,000,000) 강산이가 백스페이스를 입

www.acmicpc.net

 


⊙ 문제

⊙ 입력

⊙ 출력

⊙ 예제 입출력

⊙ 알고리즘 분류

  • 자료 구조
  • 스택
  • 연결 리스트

 


 

⊙ 문제 접근 과정

 

if문를 사용하여 입력받은 값이

  1.  " < " 일 때
  2.  " > " 일 때
  3.  " - " 일 때
  4. 나머지

로 나누어줬다.

 

1번인 " <  " 일 때, 입력받은 값이 있다면 가장 끝에 값 하나를 stack에 넣어준다.

만약 값이 없다면 무시

 

2번인 " > " 일 때, stack에 값이 있다면 그 값을 result에 추가해준다.

만약 stack이 없다면 무시

 

3번인 " - " 일 때, result에 값이 있다면 가장 끝에 값 하나를 지워준다. pop()으로.

만약 result에 값이 없다면 무시

 

나머지 값들은 전부 result에 추가

 

마지막으로 stack에 저장된 값들을 전부 result에 추가해주고

결과를 출력해주면 된다.

 

 

 


 

⊙ 문제 풀이

 

from collections import deque

N = int(input())

for _ in range(N):
    searchPW = input()

    stack = deque()
    result = deque()

    for i in searchPW:
        if i == "<" :
            if len(result):
                stack.append(result.pop())
        elif i == ">":
            if len(stack):
                result.append(stack.pop())
        elif i == '-':
            if len(result):
                result.pop()
        else:
            result.append(i)

    while stack:
        result.append(stack.pop())

    print("".join(result))

 


⊙ 결과

 


⊙ 마무리

 

 

NONE

 

 

좋아요는 로그인하지 않아도 누를 수 있습니다!

728x90
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함