[SWEA][Python] 1961

김영후·2022년 11월 11일
0

SW Expert Academy

목록 보기
1/1

사각형을 90도, 180도, 270도 회전 시켰을 때의 모양을 출력하는 문제이다. 어떻게 풀지 감히 잡히지 않아 일단 무지성 for문으로 풀었더니 맞긴 맞았다. 그러나 조금 찝찝해서 남들이 어떻게 풀었는지 찾아보게 되었다. 우선 아래는 내가 푼 코드

T = int(input())

for t in range(1, T+1):
    N = int(input())
    square = []
    for i in range(N):
        square.append([*map(int, input().split())])

    print("#{0}".format(t))
    for i in range(N):
        for j in range(N):
            print(square[N-1-j][i], end = "")
        print(end = " ")
        for j in range(N):
            print(square[N-1-i][N-1-j], end = "")
        print(end = " ")
        for j in range(N):
            print(square[j][N-1-i], end = "")
        print("")

보다싶이 무지성 for문이다.

다른 사람들이 푼 방법을 보니 파이썬의 zip 라이브러리를 사용해서 풀었던데 이는 배열에서 내가 지정해준 index를 가진 인자들을 묶어주는 도구이다. 이를 이용하면 처음 90도 회전, 그 90도 회전한 것에서 또 동일하게 zip 적용, 180도 회전한 것에서 또 동일하게 zip을 적용하여 각각 90, 180, 270 배열에 저장하면 쉽게 문제를 해결할 수 있었다. 그를 이용한 방법으로도 한 번 풀어보았다.

T = int(input())

for t in range(1, T+1):
    N = int(input())
    square = []
    for i in range(N):
        square.append([*map(str, input().split())])
    square90 = list(zip(*square[::-1]))
    square180 = list(zip(*square90[::-1]))
    square270 = list(zip(*square180[::-1]))

    for i in range(N):
        print("".join(square90[i]), "".join(square180[i]), "".join(square270[i]))

이런 라이브러리가 있고 라이브러리를 사용하는 법을 잘 안다면 응용을 통해 문제들을 잘 해결해낼 수 있겠다는 생각이 들었다.
첫 글이라 두서도 없고 그냥 쓰고싶은 대로 써봤다. 앞으로는 글 쓰는 것도 연습해서 블로그를 잘 운영해봐야겠다!

profile
PNU CSE 16th / Busan, South Korea

0개의 댓글