-
[백준 1360] 되돌리기 (Python)Algorithm & Problem Solving/구현(Implementation) 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])
결과
문제풀이나 코드에서 이상한 부분 지적은 언제나 환영합니다!
'Algorithm & Problem Solving > 구현(Implementation)' 카테고리의 다른 글
[백준 3190] 뱀 (Python) (0) 2021.01.27 [백준 9081] 단어 맞추기 (Python) (0) 2021.01.22 [백준 2886] 자리 전쟁 (Python) (0) 2020.11.23