시간초과 넘무 싫어 😥
# str = list(input())
str = input()
cursor = len(str) # 커서 위치(인덱스)
for _ in range(int(input())):
key = list(input().split())
# 커서 왼쪽 한 칸 이동
if key[0]=='L':
if cursor==0:
continue
else:
cursor -= 1 # 왼쪽 인덱스로 이동
# 커서 오른쪽 한 칸 이동
elif key[0]=='D':
if cursor==len(str):
continue
else:
cursor += 1 # 오른쪽 인덱스로 이동
# 왼쪽에 있는 문자 삭제
elif key[0]=='B':
if cursor==0:
continue
else:
str = str[:cursor-1]+str[cursor:]
# str.pop(cursor-1)
cursor -= 1
# 특정 문자를 커서 왼쪽에 추가
else:
if cursor == len(str):
str = str+key[1]
else:
str = str[:cursor]+key[1]+str[cursor:]
# str.insert(cursor, key[1])
cursor += 1
# print(''.join(str))
print(str)
나의 흔적..
내 시도는 cursor, 즉 인덱스를 잡아서 리스트의 pop과 insert 함수를 쓰려고 했는데..! 시간제한 0.3초 ㅋㅋ.. 당연히 시간초과 빠라밤바ㅁ바~
1. 리스트와 인덱스로 시도했을 때 2%인가에서 바로 시간초과!
2. 문자열과 인덱스로 붙여넣기로 시도했을 때 14%인가에서 (오?) 바로 시간초과! (어림도 없지~)
결국 내가 졌다 ㅠㅠ 풀이방법을 찾아봤는데 미쳤다 완전 내 기준 신박한 방법!!
리스트 2개를 활용하는 방식이었다. 입력값으로 받아온 리스트는 커서 기준 왼쪽, 새로운 리스트는 커서 기준 오른쪽으로 두는 것이다. 커서를 왼쪽으로 옮기면(L) 리스트1의 요소를 리스트2로 옮기고, 오른쪽으로 옮기면(D) 리스트2의 요소를 리스트1로 옮긴다. 왼쪽을 삭제(B)하면 리스트1의 요소를 pop한다. 마지막으로 왼쪽에 새로운 문자를 삽입하면(P $) 리스트1에 새로운 문자를 삽입해주면 된다. Wow..
str = list(input()) # 커서 기준 왼쪽
str2 = [] # 커서 기준 오른쪽
for _ in range(int(input())):
key = list(input().split())
# 커서 왼쪽 한 칸 이동
if key[0]=='L':
if len(str)==0: continue
str2.append(str.pop())
# 커서 오른쪽 한 칸 이동
elif key[0]=='D':
if len(str2)==0: continue
str.append(str2.pop())
# 왼쪽에 있는 문자 삭제
elif key[0]=='B':
if len(str)==0: continue
str.pop()
# 특정 문자를 커서 왼쪽에 추가
else:
str.append(key[1])
print(''.join(str)+''.join(reversed(str2)))
비슷한 문제 : 키로거