2차원 배열 arr을 시계 방향으로 90도 * n번 회전하는 함수 구현
-> 일반화 식 생각할 때 그림 그려서 하기 헷갈림 **
def solution(arr,n):
def rotate_90(arr):
n=len(arr)
rotated_arr=[[0]*n for _ in range(n)]
# 한 번 회전
for i in range(n):
for j in range(n)
rotated_arr[j][n-i-1]=arr[i][j]
return rotated_arr
rotated_arr=arr.copy()
for _ in rnage(n):
rotated_arr=rotate_90(rotated_arr)
return rotated_arr
matrix1과 matrix2는 정수값으로 이루어진 3x3 행렬
두 행렬을 곱한 결과의 전치 행렬을 반환
def multiply_matrices(matrix1,matrix2):
result=[[0,0,0],[0,0,0],[0,0,0]]
for i in range(3):
for j in range(3):
for k in range(3):
result[i][j]+=matrix1[i][k]*matrix2[k][j]
return result
def transpose_matrix(matrix):
result=[[0,0,0],[0,0,0],[0,0,0]]
for i in range(3):
for j in range(3):
result[i][j]=matrix[j][i]
return result
def solution(matrix1,matrix2):
multiplied=multipy_matrices(matrix1,matrix2)
transposed=transpose_matrix(multiplied)
return transposed
n을 입력받아 nxn 크기의 2차원 배열을 생성하여 달팽이 수열을 채우는 함수 구현
달팽이 수열은 다음과 같이 숫자 1부터 시작해서 시계 방향 나선형으로 채우는 수열
def solution():
snail_array=[[0]*n for _ in range(n)]
# 현재 달팽이 수열에 삽입할 숫자
num=1
start_row, end_row = 0,n-1
start_column, end_column = 0,n-1
# 네 단계 상->우->하->좌 구현 후 반복
while start_row <= end_row and start_col <= end_col:
# 첫번째 행 채우기
for i in range(start_col,end_col+1):
snail_arrat[start_row][i]=num
num+=1
start_row+=1
# 마지막 열 채우기
for i in range(start_row,end_row+1):
snail_array[i][end_col]=num
num+=1
end_col-=1
# 마지막 행 채우기
if start_row<=end_row:
for i in range(end_col,start_col=1,-1):
snail_array=[end_row][i]=num
num+=1
end_row-=1
# 첫번째 열 채우기
if start_col<=end_col:
for i in range(end_row,start_row-1,-1):
snail_array[i][start_col]=num
num+=1
start_col+=1
return array