본문 바로가기
Algorithm/동적계획법

[프로그래머스 lv 3] 정수 삼각형

by HANNI하니 2023. 6. 2.

사용 언어 - Python3

문제 - 정수 삼각형

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

 

정답

DP 규칙 찾기 (정답 맞춘 여부 X) 

행, 열을 전부 돌면서 해당 위치의 값과 윗 값을 더해 가장 큰 값으로 해당 위치를 업데이트해준다.

가장 윗 값은 더할 것이 없으므로 무시하고 인덱스 1부터 시작한다. (실제론 2행부터 시작)

 

1. 삼각형의 가장 왼쪽 열 = 오른쪽 값만 더하기

2. 삼각형의 가장 오른쪽 열 = 왼쪽 값만 더하기

3. 나머지 값 = 양쪽 값 중에 큰 값으로 더하기

삼각형 마지막 행들 중 가장 큰 값을 return 한다.

def solution(triangle):
    for i in range(1,len(triangle)): # 행
        for j in range(i+1): # 열
            if j == 0: # 가장 왼쪽
                triangle[i][j] = triangle[i][j] + triangle[i-1][j] #오른쪽 값만 더하기
            elif j == i: # 가장 오른쪽
                triangle[i][j] = triangle[i][j] + triangle[i-1][j-1] #왼쪽 값만 더하기
            else:
                triangle[i][j] = triangle[i][j] + max(triangle[i-1][j],triangle[i-1][j-1]) # 둘중 큰 값 더하기

    return max(triangle[-1])

 

 

 

레퍼런스

  • 정답 풀이
 

[Programmers]Lv 3. 정수 삼각형

문제: 위와 같은 삼각형의 꼭대기에서 바닥까지 이어지는 경로 중,거쳐간 숫자의 합이 가장 큰 경우를 찾아보려고 합니다. 아래 칸으로 이동할 때는 대각선 방향으로 한 칸 오른쪽 또는 왼쪽으

codedrive.tistory.com

  • 깃허브
 

GitHub - yyeongeun/codingtest: 코딩테스트 공부

코딩테스트 공부. Contribute to yyeongeun/codingtest development by creating an account on GitHub.

github.com

 

 

댓글