[백준] 행운의 바퀴

 

문제

class Node():
    def __init__(self, value, next_node = None, prev_node = None):
        self.value = value
        self.next_node = next_node
        self.prev_node = prev_node

n, k = map(int, input().split())
head = Node('?')
tail = Node('?')
head.next_node = tail
tail.prev_node = head

cur = head
for _ in range(1, n - 1):
    new = Node('?')
    cur.next_node = new
    new.prev_node = cur
    cur = new
cur.next_node = tail
tail.prev_node = cur
head.prev_node = tail
tail.next_node = head

move = []
for _ in range(k):
    step, value = input().split()
    step = int(step)
    move.append((step, value))

cur = head
use_value = set()
valid = True
for step, value in move:
    # 시계 방향으로 step만큼 이동
    # cur = cur.next_node
    for _ in range(step):
        cur = cur.prev_node

    # 이미 들어와있는 경우에 다른 값이 들어온 경우 or 아직 값이 없지만 이미 사용된 경우
    if (cur.value != '?' and cur.value != value) or (cur.value == '?' and value in use_value):
        valid = False
        break
    
    if cur.value == '?':
        cur.value = value
        use_value.add(value)

if valid:
    for _ in range(n):
        print(cur.value, end='')
        cur = cur.next_node
else:
    print('!')