For Programmer
SWEA 1961 파이썬 문제풀이(숫자 배열 회전) 본문
728x90
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5Pq-OKAVYDFAUq
이문제는 회전시킨 행렬들을 무지성 반복문을 돌아 구하 거나 혹은 zip함수를 쓰면 쉽게 구할 수 있다.
1. zip풀이
def solution(order, array):
result = [] # 회전시킨 행렬들을 담을 리스트
temp_list_90 = list(map(list, zip(*array[::-1])))
result.append(temp_list_90)
temp_list2_180 = list(map(list, zip(*temp_list_90[::-1])))
result.append(temp_list2_180)
temp_list3_270 = list(map(list, zip(*temp_list2_180[::-1])))
result.append(temp_list3_270)
# 회전시킨 리스트들을 출력하기위해 열과 행을 바꾸어 준다.(전치)
result = list(map(list, zip(*result)))
print(f'#{order}')
for i in result:
for j in i:
print("".join(map(str, j)), end=" ")
print()
T = int(input())
for order in range(1, T + 1):
N = int(input())
array = [list(map(int, input().split())) for _ in range(N)]
solution(order, array)
2. 반복문 돌기
T = int(input())
def solution(order, array, N):
result = []
for i in range(N):
b = ""
for j in range(N - 1, -1, -1):
b += str(array[j][i])
result.append(b)
for i in range(N - 1, -1, -1):
b = ""
for j in range(N - 1, -1, -1):
b += str(array[i][j])
result.append(b)
for i in range(N - 1, -1, -1):
b = ""
for j in range(N):
b += str(array[j][i])
result.append(b)
print(f'#{order}')
for i in range(N):
for j in range(i, N * 3, N):
print(result[j], end=" ")
print()
for order in range(1, T + 1):
N = int(input())
array = [list(map(int, input().split())) for _ in range(N)]
solution(order, array, N)
728x90
'코팅테스트 > 백준 문제 모음' 카테고리의 다른 글
SWEA 1979 파이썬 문제풀이(어디에 단어가 들어갈 수 있을까) (0) | 2022.02.09 |
---|---|
SWEA 4466 파이썬 문제풀이(최대 성적표 만들기) (0) | 2022.02.08 |
SWEA 1947 파이썬 문제풀이(스도쿠 검증) (0) | 2022.02.08 |
SWEA 1258 파이썬 문제풀이(행렬찾기) (0) | 2022.02.07 |
SWEA 1220 파이썬 문제풀이(Magnetic) (0) | 2022.02.06 |
Comments