반응형
○
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
반응형
'Algorithm > LeetCode' 카테고리의 다른 글
[Swift 알고리즘] LeetCode 2399. Check Distances Between Same Letters (0) | 2023.04.25 |
---|---|
[Swift 알고리즘] LeetCode 53. Maximum Subarray (0) | 2023.04.03 |
[Swift 알고리즘] LeetCode 70. Climbing Stairs (0) | 2023.04.03 |
[Swift 알고리즘] LeetCode 119. Pascal's Triangle II (0) | 2023.04.01 |
[Swift 알고리즘] LeetCode 2457. Minimum Addition to Make Integer Beautiful (0) | 2023.03.10 |