사용 언어 - 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
'Algorithm > 동적계획법' 카테고리의 다른 글
[프로그래머스 lv 4] 사칙연산 (0) | 2023.06.07 |
---|---|
[프로그래머스 lv 3] 등굣길 (0) | 2023.06.02 |
다이나믹 프로그래밍? (0) | 2023.06.01 |
[Python3] 백준 1904번 01타일 (0) | 2023.04.06 |
[Python3] 백준 2579번 계단오르기 (0) | 2023.04.05 |
댓글