백준 16935 배열 돌리기 3

gmlwlswldbs·2021년 9월 18일
0

코딩테스트

목록 보기
19/130
n, m, r = map(int, input().split())
a = [list(map(int, input().split())) for _ in range(n)]
def op1(a):
    n = len(a)
    m = len(a[0])
    ans = [[0] * m for _ in range(n)]
    for i in range(0, n):
        for j in range(m):
            ans[i][j] = a[n-1-i][j]
    return ans
def op2(a):
    n = len(a)
    m = len(a[0])
    ans = [[0] * m for _ in range(n)]
    for i in range(n):
        for j in range(0, m):
            ans[i][j] = a[i][m-1-j]
    return ans
def op3(a):
    n = len(a)
    m = len(a[0])
    ans = [[0] * n for _ in range(m)]
    for i in range(m):
        for j in range(n):
            ans[i][j] = a[n-1-j][i]
    return ans
def op4(a):
    n = len(a)
    m = len(a[0])
    ans = [[0] * n for _ in range(m)]
    for i in range(m):
        for j in range(n):
            ans[i][j] = a[j][m-1-i]
    return ans        
def op5(a):
    n = len(a)
    m = len(a[0])
    ans = [[0] * m for _ in range(n)]
    for i in range(0, n // 2):
        for j in range(0, m // 2):
            ans[i][j] = a[i + n//2][j]
    for i in range(0, n // 2):
        for j in range(m // 2, m):
            ans[i][j] = a[i][j - m//2]
    for i in range(n // 2, n):
        for j in range(m // 2, m):
            ans[i][j] = a[i - n//2][j]
    for i in range(n // 2, n):
        for j in range(0, m // 2):
            ans[i][j] = a[i][j + m//2]
    return ans
def op6(a):
    n = len(a)
    m = len(a[0])
    ans = [[0] * m for _ in range(n)]
    for i in range(0, n // 2):
        for j in range(0, m // 2):
            ans[i][j] = a[i][j + m//2]
    for i in range(0, n // 2):
        for j in range(m // 2, m):
            ans[i][j] = a[i - n//2][j]
    for i in range(n // 2, n):
        for j in range(0, m // 2):
            ans[i][j] = a[i - n//2][j]
    for i in range(n // 2, n):
        for j in range(m // 2, m):
            ans[i][j] = a[i][j - m//2]
    return ans
ops = [op1, op2, op3, op4, op5, op6]
for k in map(int, input().split()):
    a = ops[k-1](a)            
for row in a:
    print(*row, sep = ' ')
n = len(a)
m = len(a[0])```
배열 a의 행과 열이 바뀔 수 있기 때문에 이 부분이 행렬마다 필요함 
ops = [op1, op2, op3, op4, op5, op6]
for k in map(int, input().split()):
    a = ops[k-1](a)
for row in a:
    print(*row, sep = ' ')

이차원 리스트 괄호 없이 출력
더 깔끔하게 정리~

0개의 댓글