[ LeetCode ] 118 Pascal's Trianlge

codesver·2023년 7월 4일
0

LeetCode

목록 보기
15/24
post-thumbnail

📌 Problem


위의 그림과 같이 위의 층을 바탕으로 새로운 층을 만드는 것을 파스칼 삼각형이라고 한다. 높이가 주어졌을 때 만들어지는 파스칼 삼각형의 층별 숫자를 배열로 만들어서 반환하면 된다. 예를 들어 높이 3이 주어지면 [[1], [1, 1], [1, 2, 1]]를 반환하면 된다. 높이는 최소 1층에서 30층까지 주어진다.

📌 Solution

최소 1층은 주어지기 째문에 [[1]]은 기본값으로 가지고 있는 배열을 만든다. 이후 주어진 높이 - 1 만큼 다음 층을 만든다. 이 때 이전 층의 양끝에 0이 있다고 가정하고 이웃한 숫자끼리 더해서 새로운 배열을 생성한다. 예를 들어 2층은 1층 [1]에서 양끝에 0이 있다고 가정한 [0, 1, 0]을 사용한다. 이웃한 숫자끼리 더하여 새로운 배열을 만들면 [1, 1]이 생성한다. 3층도 마찬가지로 [0, 1, 1, 0]에서 이웃한 숫자끼리 더하여 [1, 2, 1]을 생성한다.

📌 Code

class Solution {
    fun generate(numRows: Int) = mutableListOf(listOf(1)).also { list ->
        repeat(numRows - 1) {
            val preRow = list.last()
            val row = mutableListOf(preRow.first())
            for (col in 0..preRow.size - 2) row.add(preRow[col] + preRow[col + 1])
            list.add(row.apply { add(preRow.last()) })
        }
    }
}
profile
Hello, Devs!

0개의 댓글