숫자 배열 회전

최민수·2023년 7월 11일
0

알고리즘

목록 보기
65/94
def rotate90():
    temp = [[] for _ in range(N)]
    idx = 0
    for c in range(N):
        for r in range(N-1, -1, -1):
            temp[idx].append(matrix[r][c])
        idx += 1
    return temp


def rotate180():
    temp = [[] for _ in range(N)]
    idx = 0
    for r in range(N-1, -1, -1):
        for c in range(N-1, -1, -1):
            temp[idx].append(matrix[r][c])
        idx += 1
    return temp


def rotate270():
    temp = [[] for _ in range(N)]
    idx = 0
    for c in range(N-1, -1, -1):
        for r in range(N):
            temp[idx].append(matrix[r][c])
        idx += 1
    return temp


T = int(input())
# 여러개의 테스트 케이스가 주어지므로, 각각을 처리합니다.
for test_case in range(1, T + 1):
    N = int(input())
    matrix = [[] for _ in range(N)]
    for i in range(N):
        val = map(int, input().split())
        for j in val:
            matrix[i].append(j)

    # 회전 배열
    rot90 = [[] for _ in range(N)]
    rot180 = [[] for _ in range(N)]
    rot270 = [[] for _ in range(N)]

    # 90도 회전
    rot90 = rotate90()

    # 180도 회전
    rot180 = rotate180()

    # 270도 회전
    rot270 = rotate270()

    print("#" + str(test_case))

    for k in range(N):
        print("".join(map(str, rot90[k])), end=" ")
        print("".join(map(str, rot180[k])), end=" ")
        print("".join(map(str, rot270[k])))

90도, 180도, 270도 상황별로 어떤 식으로 출력되는지만 파악하면 되는 문제다.

그런데 출력이 조금 생각해 볼만 했다.
회전배열이 다음과 같이 출력되어야 했기에

#1
741 987 369

852 654 258

963 321 147

각 회전배열마다 출력하는 것이 모든 배열의 한 줄씩 출력씩 출력해야 했던 것이 생각해볼만한 포인트였다.


출처: https://swexpertacademy.com/main/talk/solvingClub/problemView.do?solveclubId=AYj2mga6ZewDFASl&contestProbId=AV5Pq-OKAVYDFAUq&probBoxId=AYj2nEQ6ZfkDFASl&type=PROBLEM&problemBoxTitle=%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98+Track+%28%EB%82%9C%EC%9D%B4%EB%8F%84+%EC%A4%91%29&problemBoxCnt=5

profile
CS, 개발 공부기록 🌱

0개의 댓글