Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- kotlin
- 안드로이드
- 아마존 웹 서비스
- Flutter
- 프로그래머스
- 소프티어
- java
- DART
- softeer
- 개발
- 코틀린
- VSCode
- MVVM
- aws
- 다트
- 머신러닝
- 백준
- 코테
- Android
- GDSC
- 알고리즘
- 파이썬
- 스위프트
- SWIFT
- baekjoon
- Python
- 현대sw
- 플러터
- 자바
- programers
Archives
- Today
- Total
조준장 개발자 생존기
[baekjoon] 백준 5397번(파이썬): 키로거 본문
문제
5397번: 키로거
첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 한줄로 이루어져 있고, 강산이가 입력한 순서대로 길이가 L인 문자열이 주어진다. (1 ≤ L ≤ 1,000,000) 강산이가 백스페이스를 입
www.acmicpc.net
알고리즘
- 테스트 케이스만큼 반복한다.
- 반복문을 통해 강산이의 입력 순서를 확인한다.
- 커서 기준으로 res 리스트는 왼쪽에 있는 입력, stack 리스트는 오른쪽에 있는 입력이다.
- 커서 기준에 따라 입력을 수행해준다.
코드
import sys
t = int(sys.stdin.readline())
# 테스트 케이스만큼 반복
for _ in range(t):
l = list(map(str, sys.stdin.readline().strip()))
stack = []
res = []
# 반복문을 통해 강산이의 입력 순서를 확인
for i in l:
# 입력이 "-" 이고 res 리스트에 요소가 있으면 res 리스트를 팝한다.
if i == "-":
if res:
res.pop()
# 입력이 "<" 이고 res 리스트에 요소가 있으면 res 리스트를 팝하고 팝한 것을 stack 리스트에 추가
elif i == "<":
if res:
stack.append(res.pop())
# 입력이 ">" 이고 stack 리스트에 요소가 있으면 stack 리스트를 팝하고 팝한 것을 res 리스트에 추가
elif i == ">":
if stack:
res.append(stack.pop())
# 그 외 입력은 res 리스트에 추가
else:
res.append(i)
# 반복문을 통해 모든 입력을 확인한 후에는 두개의 리스트를 합쳐준다.
while stack:
res.append(stack.pop())
print("".join(res))
github
GitHub - junjange/CodingTest: 내가 푼 코딩 테스트 문제와 해결법
내가 푼 코딩 테스트 문제와 해결법. Contribute to junjange/CodingTest development by creating an account on GitHub.
github.com
'CodingTest > Baekjoon' 카테고리의 다른 글
[baekjoon] 백준 1976번(파이썬): 여행 가자 (0) | 2021.10.06 |
---|---|
[baekjoon] 백준 1766번(파이썬): 문제집 (0) | 2021.10.05 |
[baekjoon] 백준 9375번(파이썬): 패션왕 신해빈 (0) | 2021.10.03 |
[baekjoon] 백준 2504번(파이썬): 괄호의 값 (0) | 2021.10.02 |
[baekjoon] 백준 1620번(파이썬): 나는야 포켓몬 마스터 이다솜 (0) | 2021.10.01 |