적당한 고통은 희열이다

- 댄 브라운 '다빈치 코드' 중에서

Algorithm/LeetCode

[Swift 알고리즘] LeetCode 118. Pascal's Triangle

hongssup_ 2023. 4. 1. 15:26
반응형

Dynamic Programming | Easy

118. Pascal's Triangle

제출 답안 30분

append([1]) 해주고 더한  값들 append 해주고 마지막에 append 1 해주는 방법

class Solution {
    func generate(_ numRows: Int) -> [[Int]] {
        var result = [[1]]

        for i in 1..<numRows {
            result.append([1])
            for j in 0..<(i-1) {
                let plus = result[i-1][j] + result[i-1][j+1]
                result[i].append(plus)
            }
            result[i].append(1)
        }
        return result

    }
}

 

+ 다른 답안

append 해줄 필요 없이 처음부터 numRows 수만큼 배열을 초기화 해놓고 값을 업데이트 해주는 방법. 

시간도 빠르고 메모리 사용도 적은듯. 

var triangle = [[Int]](repeating: [1], count: numRows)

for row in 1..<numRows {
    triangle[row] = [Int](repeating: 1, count: row + 1)
    
    for element in 1..<row {
        triangle[row][element] = triangle[row - 1][element - 1] + triangle[row - 1][element]
    }
}
return triangle

index 때문에 헷갈리면 요러케 prevRow 변수 따로 만들어서 직전 배열 저장해놓고 풀어도 깔꼼할듯

var triangle = [[1]]

for row in 1..<numRows {
    let prevRow = triangle.last!
    var newRow = Array(repeating: 1, count: row + 1)

    for j in 1..<row {
        newRow[j] = prevRow[j-1] + prevRow[j]
    }
    triangle.append(newRow)
}
return triangle
728x90
반응형