[SWEA]1961.숫자배열회전

야금야금 공부·2023년 4월 13일
0

SWEA

목록 보기
2/43

SWEA 1961.숫자배열회전


문제

시계 방향으로 배열 회전

  • 90도 회전
  • 180도 회전
  • 270도 회전

문제 풀이

배열을 회전하는 방법

reversed_arr = reversed_arr[::-1]
reversed_arr = list(zip(*reversed_arr))

for j in reversed_arr:
     arrlist.append(j)

전체 코드

t = int(input())

for i in range(1, t + 1):
    n = int(input())

    arr = list(map(int, input().split()) for _ in range(n))
    reversed_arr = arr

    arrlist = []

    for _ in range(3):  # 한 번 돌릴때 90도씩 회전
        reversed_arr = reversed_arr[::-1]
        reversed_arr = list(zip(*reversed_arr))

        for j in reversed_arr:
            arrlist.append(j)

    print(f"#{i}")
    for p in range(n):
        for j in range(p, len(arrlist), n):
            for k in range(len(arrlist[j])):
                print(arrlist[j][k], end='')

            print(end=' ')
        print()

다른 코드1

  • arr[n-1-j][i] 를 통해 회전
    ex) arr[0][0] 이라면, arr[3-1-0][0] = arr[2][0] 으로 회전 가능
#90도 회전
def degree_90(arr):
    result = [[0] * N for _ in range(N)]
    for i in range(N):
        for j in range(N):
            result[i][j] = arr[N-1-j][i]
    return result

# 테스트 케이스 개수
T = int(input())
for tc in range(1,T+1):
    # N*N 행렬
    N = int(input())
    arr = [list(map(str,input().split())) for _ in range(N)]

    # 90도 회전
    arr2 = degree_90(arr)
    # 90도 회전 + 90도 회전 = 180도 회전
    arr3 = degree_90(arr2)
    # 90도 회전 + 90도 회전 + 90도 회전 = 270도 회전
    arr4 = degree_90(arr3)
    
    print(f'#{tc}')
    for a,b,c in zip(arr2,arr3,arr4):
        a1 = ''.join(a)
        b1 = ''.join(b)
        c1 = ''.join(c)
        print(a1,b1,c1)

다른 코드2

# 테스트 케이스 개수
T = int(input())
for tc in range(1,T+1):
    # N*N 행렬
    N = int(input())
    arr1 = [list(map(str,input().split())) for _ in range(N)]
    # 90도 회전
    arr2 = [[0]*N for _ in range(N)]
    # 180도 회전
    arr3 = [[0] * N for _ in range(N)]
    # 270도 회전
    arr4 = [[0] * N for _ in range(N)]

    for i in range(N):
        for j in range(N):
            arr2[i][j] = arr1[N-1-j][i]
            arr3[i][j] = arr1[N-1-i][N-1-j]
            arr4[i][j] = arr1[j][N-1-i]
    print(f'#{tc}')
    for a1,a2,a3 in zip(arr2,arr3,arr4):
        a11 = ''.join(a1)
        a22 = ''.join(a2)
        a33 = ''.join(a3)
        print(a11,a22,a33)


코드 참고

0개의 댓글