leetcode , 백준

[반복문] LeetCode 119번 문제 학습

_HelloWorld_ 2025. 3. 21. 15:44

 

문제를 푼 과정

  1. 118번에서 파스칼의 삼각형 전체를 만든 코드를 활용했음.
  2. 119번은 특정 행만 필요하니까 인자와 반환값만 조정했음.
  3. 쉽게 맞췄다고 하니 로직이 잘 들어맞았음.

문제에 대한 설명

  1. 이 문제는 파스칼의 삼각형에서 주어진 행 번호(rowIndex)의 행을 반환하는 문제임.
  2. 예를 들어 rowIndex = 3이면 [1,3,3,1]을 반환해야 함.
  3. 이전 행을 기반으로 현재 행을 계산하는 방식이 118번과 같음.

문제를 풀려면 어떤 알고리즘을 써야 하는지

  1. 반복문을 사용해서 각 행을 순차적으로 계산하면 됨.
  2. 동적 프로그래밍처럼 이전 행의 값을 재활용하는 방식이 간단함.
  3. 필요한 행만 반환하도록 마지막에 슬라이싱하면 됨.
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]로 원하는 행만 반환.