문제 설명 및 제한사항
아이디어 및 해결 방법
코드
from collections import deque
R, C = None, None
def shiftRow(l, midrows, r):
for d in [l, midrows, r]:
d.rotate(1)
def rotate(l, midrows, r):
midrows[0].appendleft(l.popleft())
r.appendleft(midrows[0].pop())
midrows[-1].append(r.pop())
l.append(midrows[-1].popleft())
def solution(rc, operations):
global R, C
R, C = len(rc), len(rc[0])
lcol = deque([rc[r][0] for r in range(R)])
rcol = deque([rc[r][-1] for r in range(R)])
midrows = deque( deque(rc[r][1:C-1]) for r in range(R) )
for op in operations:
rotate(lcol, midrows, rcol) if op == 'Rotate' else shiftRow(lcol, midrows, rcol)
return [[lcol.popleft()] + list(midrows[r]) + [rcol.popleft()] for r in range(R)]
Python
복사
출처
프로그래머스 코딩테스트 연습 https://school.programmers.co.kr/learn/challenges