Search
Duplicate

행렬과 연산

문제 설명 및 제한사항

아이디어 및 해결 방법

코드

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