선릉역 1번 출구
baekjoon - 1406 본문
from sys import stdin word = list(stdin.readline().strip()) word2 = [] num = int(stdin.readline()) for i in range(num): command = stdin.readline().strip() if command[0] == "P": word.append(command[2]) elif command[0] == "B": if word: word.pop() else: continue elif command[0] == "D": if word2: word.append(word2.pop()) else: continue elif command[0] == 'L': if word: word2.append(word.pop()) print(''.join(word+list(reversed(word2)))) |
*일단 입력 받는 걸 input().split() 사용하지말고 import sys를 해서 sys.stdin.readline()을 사용하자
그리고 stdin.readline().strip()은 공백도 인식해서 index값으로 1이 아닌 2을 넣어주었다.
->이거 때문에 맨날 시간초과 뜨는듯
이 문제 정답 비율이 27%밖에 안돼서 어떻게 풀어야되지 고민을 했는데 내가 생각해낸 건 두 개의 stack을 사용하는 거였다.
그래서 L명령어가 들어오면 stack의 top을 pop해서 다른 stack(2)에 넣게, D명령어가 들어오면 다른 stack(2)에서 명령을 pop해서 가져오게, B명령어가 들어오면 stack(1)에서 pop()해서 지우고 P $는 stack(1)에 append만 하면 된다.
결론: 이 문제의 키 포인트는 커서가 stack(1)의 top을 위치하도록 유지하는 것이다.
'Algorithm > Algorithm 문제풀이' 카테고리의 다른 글
baekjoon - 10866 (0) | 2021.08.30 |
---|---|
baekjoon - 10845 (0) | 2021.08.30 |
baekjoon - 1874 (0) | 2021.08.28 |
baekjoon - 9012 (0) | 2021.08.28 |
baekjoon - 9093 (0) | 2021.08.28 |
Comments