모든 명령어를 수행한 후 표의 상태와 처음 주어진 표의 상태를 비교하여 삭제되지 않은 행은 O, 삭제된 행은 X로 표시하여 문자열 형태로 return 하도록 solution 함수를 완성해주세요.
def solution(n, k, cmd):
answer = ''
maps = {}
for i in range(n):
maps[i] = {'pre': i-1, 'post': i+1, 'deleted': False}
q = list()
for c in cmd:
if c[0] == 'D': # 아래로 이동
num = int(c[2:])
while num > 0:
k = maps[k]['post']
num -= 1
elif c[0] == 'U': # 위로 이동
num = int(c[2:])
while num > 0:
k = maps[k]['pre']
num -= 1
elif c[0] == 'C': # 제거
q.append(k)
maps[k]['deleted'] = True
if maps[k]['pre'] != -1:
maps[maps[k]['pre']]['post'] = maps[k]['post']
if maps[k]['post'] != n:
maps[maps[k]['post']]['pre'] = maps[k]['pre']
k = maps[k]['post']
else:
k = maps[k]['pre']
else: # 다시 추가
index = q.pop(-1)
if maps[index]['pre'] != -1:
maps[maps[index]['pre']]['post'] = index
if maps[index]['post'] != n:
maps[maps[index]['post']]['pre'] = index
maps[index]['deleted'] = False
return "".join(['X' if maps[x]['deleted'] else 'O' for x in maps])