Algorithm & Problem Solving/구현(Implementation)
[백준 1360] 되돌리기 (Python)
baby_ohgu
2021. 1. 21. 01:55
문제풀이
N : 입력값
cmd, ch, t : 입력값
q : 현재까지의 시간과 타이핑한 텍스트 저장 리스트 [(시간, 텍스트)]
now : 현재 텍스트
따로 알고리즘이 필요없는, 그냥 문제에서 요구한대로 구현만 하면 해결할 수 있는 문제이다. 몇몇 예외 테스트케이스만 조심하면 쉽게 해결할 수 있다.
1. cmd가 type일 경우
- 현재 텍스트(now)에 ch 추가
- q에 시간(t)과 텍스트(now) 저장
2. cmd가 undo일 경우
- q에서 시간이 t - ch 보다 작을때까지 탐색
- 그때의 텍스트를 가져와서 q에 현재시간과 텍스트 삽입
- q에 존재하는 최초의 시간보다 작을 경우 비어있는 텍스트 삽입
3. q의 마지막 시간에 있는 텍스트를 출력한다.
코드
import sys
if __name__ == '__main__':
N = int(input())
q = []
now = ''
for _ in range(N):
flag = False
cmd, ch, t = map(str, sys.stdin.readline().split())
if cmd == 'type':
now += ch
q.append((int(t), now))
else:
ch, t = int(ch), int(t)
for i in range(len(q) - 1, -1, -1):
if q[i][0] >= t - ch: continue
flag = True
now = q[i][1]
q.append((t, now))
break
if not flag:
now = ''
q.append((t, now))
print(q[-1][1])
결과
문제풀이나 코드에서 이상한 부분 지적은 언제나 환영합니다!