표 편집
- 문제 유형 : Linked List, Stack
- 사용언어 : Python
- 난이도 : LV. 3
- 출처 : 프로그래머스
https://school.programmers.co.kr/learn/courses/30/lessons/81303
def solution(n, k, cmd):
state = ["O"] * n
# 링크드 리스트 구성 요소
nodes = {i: {'prev': i-1, 'next': i+1} for i in range(n)}
nodes[0]['prev'] = None
nodes[n-1]['next'] = None
# 초기 위치 설정
current = k
recycle_bin = []
for command in cmd:
if command[0] == "D": # Down
move = int(command.split()[1])
for _ in range(move):
if nodes[current]['next'] is not None:
current = nodes[current]['next']
elif command[0] == "U": # Up
move = int(command.split()[1])
for _ in range(move):
if nodes[current]['prev'] is not None:
current = nodes[current]['prev']
elif command == "C": # Delete
state[current] = "X"
recycle_bin.append(current)
prev_node = nodes[current]['prev']
next_node = nodes[current]['next']
if prev_node is not None:
nodes[prev_node]['next'] = next_node
if next_node is not None:
nodes[next_node]['prev'] = prev_node
current = next_node if next_node is not None else prev_node
elif command == "Z": # Undo delete
node = recycle_bin.pop()
state[node] = "O"
prev_node = nodes[node]['prev']
next_node = nodes[node]['next']
if prev_node is not None:
nodes[prev_node]['next'] = node
if next_node is not None:
nodes[next_node]['prev'] = node
result = ''.join(state)
return result
반응형
'Programming Test > 문제풀이' 카테고리의 다른 글
[문제 풀이 13] 코드 트리 - 오목의 승패 (0) | 2024.04.16 |
---|---|
[문제 풀이 12] 코드 트리 - 색종이 2 (0) | 2024.04.15 |
[문제 풀이 10] 프로그래머스 - 가장 큰 수 (0) | 2024.04.13 |
[문제 풀이 9] 코드 트리 - 연쇄로 터지는 폭탄 (0) | 2024.04.12 |
[문제 풀이 8] 프로그래머스 - 크레인 인형 뽑기 게임 (0) | 2024.04.12 |