[실버 2] 백준 5397 - 키로거 (파이썬)
글 작성자: pental

https://www.acmicpc.net/problem/5397
풀이
문자열 입력 중에 <, >, - 는 특별한 키로 작동한다.
- < : 커서를 왼쪽으로 옮긴다.
- : 커서를 오른쪽으로 옮긴다.
-
- : 커서 왼쪽의 문자를 삭제한다.
나머지 문자는 커서 위치에 삽입되며, 최종적으로 만들어진 문자열을 출력해야한다.
스택 2개를 활용하여 커서의 왼쪽과 오른쪽을 나누어 관리한다.
- stack1 : 커서 왼쪽에 있는 문자들
- stack2 : 커서 오른쪽에 있는 문자들
이 방식은 시간복잡도를 O(N)으로 유지하면서 빠르게 구현이 가능하다.
시간 복잡도 분석
- 각 테스트케이스마다 O(N)
- 전체 시간복잡도 : O(T * N)
코드
# 백준 5397 - 키로거 # 분류 : 자료구조 T = int(input()) for i in range(T) : S = input() stack1 = [] stack2 = [] for s in S : if s == "-" : if len(stack1) > 0 : stack1.pop(-1) elif s == "<" : if len(stack1) > 0 : stack2.append(stack1.pop(-1)) elif s == ">" : if len(stack2) > 0 : stack1.append(stack2.pop(-1)) else : stack1.append(s) print("".join(stack1) + "".join(stack2[::-1]))
이 글은
(새창열림)
본 저작자 표시, 비영리 규칙 하에 배포할 수 있습니다. 자세한 내용은 Creative Commons 라이선스를 확인하세요.
Creative Commons
본 저작자 표시
비영리
'Programming > 백준' 카테고리의 다른 글
[골드 4] 백준 1253 - 좋다 (파이썬) (0) | 2025.04.22 |
---|---|
[실버 4] 백준 3986 - 좋은 단어 (파이썬) (0) | 2025.04.22 |
[골드 4] 백준 1967 - 트리의 지름 (파이썬) (0) | 2025.04.21 |
[골드 3] 백준 13904 - 과제 (파이썬) (0) | 2025.04.21 |
[골드 1] 백준 2014 - 소수의 곱 (파이썬) (0) | 2025.04.20 |
댓글
이 글 공유하기
다른 글
-
[골드 4] 백준 1253 - 좋다 (파이썬)
[골드 4] 백준 1253 - 좋다 (파이썬)
2025.04.22 -
[실버 4] 백준 3986 - 좋은 단어 (파이썬)
[실버 4] 백준 3986 - 좋은 단어 (파이썬)
2025.04.22 -
[골드 4] 백준 1967 - 트리의 지름 (파이썬)
[골드 4] 백준 1967 - 트리의 지름 (파이썬)
2025.04.21 -
[골드 3] 백준 13904 - 과제 (파이썬)
[골드 3] 백준 13904 - 과제 (파이썬)
2025.04.21
댓글을 사용할 수 없습니다.