특정 자료구조에 삽입, 삭제, 검색 행위를 반복적으로 해야 할 때 사용
extend()
A.index(찾을 원소)
A.rindex(찾을 원소)
A.count(원소)
enumerate()
- 인덱스와 원소 동시에 접근for i, letter in enumerate(['A', 'B', 'C']):
print(i, letter)
'''
0 A
1 B
2 C
'''
check([maps[i][j] for j in range(n)]) -> 가로줄
check([maps[i][j] for i in range(n)]) -> 세로줄
for i in range(n):
for j in range(m):
result[j][n-i-1] = arr[i][j]
list(zip(*arr[::-1]))
리스트의 좌상단 위치가 (0, 0)이 아닌 경우 이동시킨 뒤 회전해야 한다
for i in range(sy, ey+1):
for j in range(sx, ex+1):
oy, ox = i-sy, j-sx
ry, rx = ox, m-oy-1
result[ry+sy][rx+sx] = arr[i][j]
https://school.programmers.co.kr/learn/courses/30/lessons/81303
def solution(n, k, cmd):
graph = {i:[i-1, i+1] for i in range(n)}
graph[0] = [None, 1]
graph[n-1] = [n-2, None]
cur = k
dele = []
answer = ['O'] * n
for c in cmd:
# 삭제
if c == 'C':
answer[cur] = 'X'
prev, next = graph[cur]
dele.append([prev, cur, next])
# 현재 선택된 행 구하기
if next == None: # 삭제된 행이 가장 마지막 행일 때
cur = graph[cur][0]
else:
cur = graph[cur][1]
# 표 상태 변경하기
if prev == None: # 삭제된 행이 가장 처음 행일 때
graph[next][0] = None
elif next == None: # 삭제된 행이 가장 마지막 행일 때
graph[prev][1] = None
else:
graph[prev][1] = next
graph[next][0] = prev
# 복구
elif c == 'Z':
prev, now, next = dele.pop()
answer[now] = 'O'
if prev == None:
graph[next][0] = now
elif next == None:
graph[prev][1] = now
else:
graph[next][0] = now
graph[prev][1] = now
# 커서 이동
else:
c1, c2 = c.split(' ')
c2 = int(c2)
if c1 == 'D':
for _ in range(c2):
cur = graph[cur][1]
else:
for _ in range(c2):
cur = graph[cur][0]
return ''.join(answer)