
문제를 푼 과정
- 118번에서 파스칼의 삼각형 전체를 만든 코드를 활용했음.
- 119번은 특정 행만 필요하니까 인자와 반환값만 조정했음.
- 쉽게 맞췄다고 하니 로직이 잘 들어맞았음.
문제에 대한 설명
- 이 문제는 파스칼의 삼각형에서 주어진 행 번호(rowIndex)의 행을 반환하는 문제임.
- 예를 들어 rowIndex = 3이면 [1,3,3,1]을 반환해야 함.
- 이전 행을 기반으로 현재 행을 계산하는 방식이 118번과 같음.
문제를 풀려면 어떤 알고리즘을 써야 하는지
- 반복문을 사용해서 각 행을 순차적으로 계산하면 됨.
- 동적 프로그래밍처럼 이전 행의 값을 재활용하는 방식이 간단함.
- 필요한 행만 반환하도록 마지막에 슬라이싱하면 됨.
package main
import (
"fmt"
)
func getRow(rowIndex int) []int {
row := make([][]int, rowIndex + 1)
for i := 1; i <= rowIndex + 1; i++ {
row[i-1] = make([]int, i)
}
for i := 0; i < len(row); i++ {
for j := 0; j < len(row[i]); j++ {
if j == 0 || j == len(row[i]) - 1 {
row[i][j] = 1
} else {
row[i][j] = row[i - 1][j] + row[i - 1][j - 1]
}
}
}
return row[rowIndex]
}
func main() {
a := getRow(3)
fmt.Println(a)
}
- row := make([][]int, rowIndex + 1)로 0부터 rowIndex까지의 삼각형을 만듦.
- 각 행의 양 끝은 1, 중간 값은 row[i-1][j] + row[i-1][j-1]로 계산.
- return row[rowIndex]로 원하는 행만 반환.
'leetcode , 백준' 카테고리의 다른 글
[반복문] LeetCode 125번 문제 학습 (0) | 2025.04.11 |
---|---|
[반복문] LeetCode 121번 문제 학습 (0) | 2025.04.11 |
[반복문] LeetCode 118번 문제 학습 (0) | 2025.03.20 |
[재귀 + DFS] LeetCode 111번 문제 학습 (0) | 2025.03.19 |
[분할정복, 재귀] LeetCode 108번 문제 학습 (0) | 2025.03.19 |