아보카도 Blog

프로그래머스스쿨: 행렬 덧셈, k번째 수 본문

자료구조, 알고리즘

프로그래머스스쿨: 행렬 덧셈, k번째 수

수수 아보카도 2023. 1. 24. 21:42

설연휴 마지막 날에 알고리즘 문제 풀었다.

우선 행렬의 덧셈

def solution(arr1, arr2):
    answer = []
    for i in range(len(arr1)):
        tmp = []
        for j in range(len(arr1[i])):
            tmp.append(arr1[i][j]+arr2[i][j])
        answer.append(tmp)
    return answer

이중 for문을 사용해서 풀었다.

새로 배운 내용은, for문 쓸 때 for i in arr1, 이런식으로 단순하게 쓰기 보다는 

range(len)을 사용해서 단위행렬처럼 행렬의 틀 먼저 만들어준 다음,

두 행렬을 더하는 방법이다. for문에서 i와 j를 통해서 해당 행렬의 숫자를 지정해주기.

 

두번쨰 문제 k번째 수

def solution(array, commands):
    answer = []
    for i in commands:
        arr = array[i[0]-1:i[1]]
        arr1 = sorted(arr)
        arr2 = arr1[i[2]-1]
        answer.append(arr2)

    return answer

처음에는 이중 for문 써서 commands의 첫번째, 두번째 수를 뽑아와야 싶었다.

하지만 문제 풀이의 핵심은 :을 사용해서 범위 range를 설정해주는 것이었다.

세번째 수는 k번째 수이므로 array[i[2] - 1]을 통해 나타내기.