IT/ps

백준 16935번 배열돌리기

u149_cinderella 2025. 2. 13. 21:45

끔찍하다.

 

뭐 설명할건 없다 그냥 깡구현이다.

import sys

n,m,r=map(int,sys.stdin.readline().rstrip().split())
board=[]
for i in range(n):
    board.append(list(map(int,sys.stdin.readline().rstrip().split())))

def move_board(type):
    global board
    n=len(board)
    m=len(board[0])
    if type==1:
        for i in range(n//2):
            board[i],board[n-1-i]=board[n-1-i],board[i]

    elif type==2:
        for i in range(n):
            for j in range(m//2):
                board[i][j],board[i][m-1-j]=board[i][m-1-j],board[i][j]

    elif type==3:
        stack=[]
        for i in range(m):
            stack_row=[]
            for j in range(n):
                stack_row.append(board[n-1-j][i])
            stack.append(stack_row)
        board=stack

    elif type==4:
        stack=[]
        for i in range(m):
            stack_row=[]
            for j in range(n):
                stack_row.append(board[j][m-1-i])
            stack.append(stack_row)
        board=stack

    else:
        sub_stack1,sub_stack2,sub_stack3,sub_stack4=[],[],[],[]
        for i in range(n//2):
            sub1=[]
            sub2=[]
            for j in range(m//2):
                sub1.append(board[i][j])
            for j in range(m//2,m):
                sub2.append(board[i][j])
            sub_stack1.append(sub1)
            sub_stack2.append(sub2)
        for i in range(n//2,n):
            sub3=[]
            sub4=[]
            for j in range(m//2):
                sub3.append(board[i][j])
            for j in range(m//2,m):
                sub4.append(board[i][j])
            sub_stack3.append(sub3)
            sub_stack4.append(sub4)
        if type==5:
            result=[]
            for i in range(n//2):
                sub_stack=[]
                for j in range(m//2):
                    sub_stack.append(sub_stack3[i][j])
                for j in range(m//2):
                    sub_stack.append(sub_stack1[i][j])
                result.append(sub_stack)
            for i in range(n//2):
                sub_stack=[]
                for j in range(m//2):
                    sub_stack.append(sub_stack4[i][j])
                for j in range(m//2):
                    sub_stack.append(sub_stack2[i][j])
                result.append(sub_stack)
            board=result
        elif type==6:
            result=[]
            for i in range(n//2):
                sub_stack=[]
                for j in range(m//2):
                    sub_stack.append(sub_stack2[i][j])
                for j in range(m//2):
                    sub_stack.append(sub_stack4[i][j])
                result.append(sub_stack)
            for i in range(n//2):
                sub_stack=[]
                for j in range(m//2):
                    sub_stack.append(sub_stack1[i][j])
                for j in range(m//2):
                    sub_stack.append(sub_stack3[i][j])
                result.append(sub_stack)
            board=result


for i in map(int,sys.stdin.readline().rstrip().split()):
    move_board(i)
for i in board:
    print(*i)

구현은 디버깅이 너무 오래걸린다.

코드 길이가 너무 길다