SW개발/코딩테스트

[LeetCode]Pascal's Triangle

https://leetcode.com/problems/pascals-triangle/

 

Pascal's Triangle - LeetCode

Can you solve this real interview question? Pascal's Triangle - Given an integer numRows, return the first numRows of Pascal's triangle. In Pascal's triangle, each number is the sum of the two numbers directly above it as shown: [https://upload.wikimedia.o

leetcode.com

 

문제 분석

파스칼의 삼각형을 구하는 문제입니다. 

 

처음 시도한 답안

class Solution:
    def generate(self, numRows: int) -> List[List[int]]:
        output = []

        for i in range(numRows):
            sums = []
            for j in range(i + 1):
                if j == 0 or j == i:
                    sums.append(1)
                else:
                    sums.append(output[i-1][j-1] + output[i-1][j])

            output.append(sums)

        return output

접근 방법

  1. row를 순회합니다.
  2. 이중 순회에서는 row의 숫자 만큼 반복합니다.
  3. 만약 가장 왼쪽 혹은 가장 오른쪽에 해당한다면 리스트에 1을 추가합니다.
  4. 그 외의 경우에는 한단계 위의 row의 왼쪽과 오른쪽의 값을 더해서 리스트에 추가합니다.
  5. 이중 순회가 끝난 값을 output에 추가합니다.

이 문제의 포인트는 이중 순회 구간에서 row의 갯수만큼 반복하는 것과 바로 위 row의 좌, 우 값을 더한 결과를 누적시켜 나가는 것입니다.

 

728x90