2021 카카오 하계 인턴쉽 출제 문제 - 표편집
2021 카카오 하계 인턴쉽 출제 문제
표 편집
문제 설명
https://programmers.co.kr/learn/courses/30/lessons/81303
class Node:
def __init__(self, val):
self.val = val
self.prev_node = None
self.next_node = None
def solution(n, k, cmd):
root = Node(0)
prev_node = root
for num in range(1, n):
temp = Node(num)
prev_node.next_node = temp
temp.prev_node = prev_node
prev_node = temp
current_node = root
for _ in range(k):
current_node = current_node.next_node
history = []
for operation in cmd:
if len(operation) > 1:
operator, num = operation.split(' ')
for _ in range(int(num)):
current_node = current_node.prev_node if operator == "U" else current_node.next_node
else:
if operation == "C":
history.append(current_node)
if current_node.prev_node is None:
current_node.next_node.prev_node = None
current_node = current_node.next_node
root = current_node
else:
if current_node.next_node:
current_node.next_node.prev_node = current_node.prev_node
current_node.prev_node.next_node = current_node.next_node
current_node = current_node.next_node
else:
current_node.prev_node.next_node = None
current_node = current_node.prev_node
else:
deleted_node = history.pop()
if deleted_node.prev_node is None:
deleted_node.next_node = root
root.prev_node = deleted_node
root = root.prev_node
else:
if deleted_node.next_node:
deleted_node.next_node.prev_node = deleted_node
deleted_node.prev_node.next_node, deleted_node.next_node = deleted_node, deleted_node.prev_node.next_node
else:
deleted_node.prev_node.next_node, deleted_node.next_node = deleted_node, deleted_node.prev_node.next_node
answer= ""
while root:
answer += "X"*(root.val - len(answer))
answer += "O"
root = root.next_node
answer += "X"*(n - len(answer))
return answer