8월 1주차 - syh39/ProblemSolving GitHub Wiki
표 편집
- 출처: 2021 카카오 채용연계형 인턴십
- 난이도 : Level 3
- 풀이 여부 : N
- 소요 시간 : 40분
- 유형 : Linked List
def solution(n, k, cmd):
cur = k
table = { i:[i - 1, i + 1] for i in range(n) }
answer = ['O'] * n
table[0] = [None, 1]
table[n - 1] = [n - 2, None]
stack = []
for c in cmd:
if c == "C":
# 삭제
answer[cur] = 'X'
prev, next = table[cur]
stack.append([prev, cur, next])
if next == None:
cur = table[cur][0]
else:
cur = table[cur][1]
if prev == None:
table[next][0] = None
elif next == None:
table[prev][1] = None
else:
table[prev][1] = next
table[next][0] = prev
elif c == "Z":
# 복구
prev, now, next = stack.pop()
answer[now] = 'O'
if prev == None:
table[next][0] = now
elif next == None:
table[prev][1] = now
else:
table[next][0] = now
table[prev][1] = now
else:
# 커서 이동
c1, c2 = c.split()
c2 = int(c2)
if c1 == 'D':
for _ in range(c2):
cur = table[cur][1]
else:
for _ in range(c2):
cur = table[cur][0]
return ''.join(answer)
프린터
- 출처: 스택/큐
- 난이도 : Level 2
- 풀이 여부 : Y
- 소요 시간 : 20분
- 유형 : Priority Queue
def solution(priorities, location):
prior = [(p, i) for i, p in enumerate(priorities)]
cnt = 0
while True:
maximum, _ = max(prior)
p, i = prior.pop(0)
if p == maximum:
cnt += 1
if i == location:
return cnt
else:
prior.append((p, i))