표 편집
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
- 다른 사람 풀이
- Linked List
def solution(n, k, cmd):
answer = ["O"] * n
deleted = []
prev = {i: i - 1 for i in range(n)} # 이전 행 연결
next = {i: i + 1 for i in range(n)} # 다음 행 연결
next[n - 1] = -1 # 마지막 행의 다음을 -1로 설정
prev[0] = -1 # 첫 번째 행의 이전을 -1로 설정
for c in cmd:
action = c.split()
if action[0] == "U":
x = int(action[1])
for _ in range(x):
k = prev[k]
elif action[0] == "D":
x = int(action[1])
for _ in range(x):
k = next[k]
elif action[0] == "C":
answer[k] = "X"
deleted.append((k, prev[k], next[k]))
if prev[k] != -1: # 이전 행이 존재
next[prev[k]] = next[k]
if next[k] != -1: # 다음 행이 존재
prev[next[k]] = prev[k]
k = next[k] if next[k] != -1 else prev[k] # 삭제 후 다음 행으로 이동
elif action[0] == "Z":
z, prev_row, next_row = deleted.pop()
answer[z] = "O"
if prev_row != -1:
next[prev_row] = z
if next_row != -1:
prev[next_row] = z
return "".join(answer)
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
| [프로그래머스][구현][조합] 순위 검색 (0) | 2025.04.05 |
|---|---|
| [백준][DFS+DP] 우수 마을 (0) | 2025.04.04 |
| [프로그래머스][누적합][imos] 파괴되지 않은 건물 (0) | 2025.03.19 |
| [프로그래머스][DFS] 양궁대회 (0) | 2025.03.18 |
| [프로그래머스][DP] 스티커 모으기(2) (0) | 2025.03.05 |