문제 링크

풀이 과정

전체 코드

from collections import deque

def solution(rc, operations):
    answer = []
    left, mid, right = deque(), deque(), deque()
    for element in rc:
        left.append(element[0])
        # append(), pop() 연산의 시간 복잡도를 O(1)로 수행하기 위하여, deque 자료형을 append합니다!
        mid.append(deque(element[1:-1]))
        right.append(element[-1])
        
    for operation in operations:
        if operation == 'ShiftRow':
            left.appendleft(left.pop())
            mid.appendleft(mid.pop())
            right.appendleft(right.pop())
        else:
            mid[0].appendleft(left.popleft())
            right.appendleft(mid[0].pop())
            mid[-1].append(right.pop())
            left.append(mid[-1].popleft())
            
    while left:
        answer.append([left.popleft()] + list(mid.popleft()) + [right.popleft()])
        
    return answer

유사 문제

특정 원소를 다른 위치에 옮겨야 하는 상황에 시간 복잡도 이슈로 직관적인 풀이가 불가능 한 경우가 있습니다.

이럴 때는, 크게 다음과 같이 접근할 수 있습니다.