시뮬레이션 - 몸풀기 문제

킵고잉·2025년 1월 5일

### 문제 62 배열 회전하기

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

### 문제 63 두 행렬을 곱한 후 전치 행렬 만들기

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        	

### 문제 64 달팽이 수열 만들기

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
            
profile
열심히 하면 되겠지

0개의 댓글