728x90
▶정수 삼각형 - 동적계획법 (level 3)
▶문제
위와 같은 삼각형의 꼭대기에서 바닥까지 이어지는 경로 중, 거쳐간 숫자의 합이 가장 큰 경우를 찾아보려고 합니다. 아래 칸으로 이동할 때는 대각선 방향으로 한 칸 오른쪽 또는 왼쪽으로만 이동 가능합니다. 예를 들어 3에서는 그 아래칸의 8 또는 1로만 이동이 가능합니다.
삼각형의 정보가 담긴 배열 triangle이 매개변수로 주어질 때, 거쳐간 숫자의 최댓값을 return 하도록 solution 함수를 완성하세요.
▶제한사항
- 삼각형의 높이는 1 이상 500 이하입니다.
- 삼각형을 이루고 있는 숫자는 0 이상 9,999 이하의 정수입니다.
▶출력
triangle result
[[7], [3, 8], [8, 1, 0], [2, 7, 4, 4], [4, 5, 2, 6, 5]] | 30 |
▶풀이
dp를 이용해서 푸는 문제이다.
dp를 1차원 배열로만 하지않고 2차원 배열로 만들어서 풀었다.
고급 문제해결 수업시간에 leetcode문제를 푸는데 이와 비슷한 문제를 풀어봐서 쉽게 풀었다.
def solution(triangle):
answer = 0
l = len(triangle)
dp = [[0 for _ in range(l)] for _ in range(l)]
dp[0][0] = triangle[0][0]
for i in range(1, l):
for j in range(i+1):
if j == 0:
dp[i][0] = dp[i-1][0] + triangle[i][0]
elif j == i:
dp[i][j] = dp[i-1][j-1] + triangle[i][j]
else:
dp[i][j] = max(dp[i-1][j-1], dp[i-1][j]) + triangle[i][j]
answer = max(dp[l-1])
return answer
이 문제는 정확성 테스트랑 효율성 테스트 둘다 통과해야한다.
dp문제이기 때문에 dp로 풀면 효율성까지 다 통과 될 것이다.
정확성 테스트
테스트 1 〉 | 통과 (0.02ms, 10.3MB) |
테스트 2 〉 | 통과 (0.03ms, 10.1MB) |
테스트 3 〉 | 통과 (0.06ms, 10.2MB) |
테스트 4 〉 | 통과 (0.19ms, 10.2MB) |
테스트 5 〉 | 통과 (1.34ms, 10.5MB) |
테스트 6 〉 | 통과 (0.65ms, 10.2MB) |
테스트 7 〉 | 통과 (1.48ms, 10.5MB) |
테스트 8 〉 | 통과 (0.32ms, 10.1MB) |
테스트 9 〉 | 통과 (0.02ms, 10.1MB) |
테스트 10 〉 | 통과 (0.18ms, 10.2MB) |
효율성 테스트
테스트 1 〉 | 통과 (46.56ms, 18.8MB) |
테스트 2 〉 | 통과 (36.49ms, 16.7MB) |
테스트 3 〉 | 통과 (52.19ms, 20MB) |
테스트 4 〉 | 통과 (47.49ms, 18.8MB) |
테스트 5 〉 | 통과 (39.80ms, 18MB) |
테스트 6 〉 | 통과 (54.96ms, 20.2MB) |
테스트 7 〉 | 통과 (45.63ms, 19.6MB) |
테스트 8 〉 | 통과 (41.11ms, 17.9MB) |
테스트 9 〉 | 통과 (43.38ms, 18.1MB) |
테스트 10 〉 | 통과 (51.62ms, 19.6MB) |
채점 결과
정확성: 64.3
효율성: 35.7
합계: 100.0 / 100.0
728x90
'Programmers Code > Level 3_4' 카테고리의 다른 글
[Programmers] level3 - 등굣길 (Python) : 동적계획법 (0) | 2022.08.25 |
---|---|
[Programmers] level3 - 파괴되지 않은 건물 (Python) : 2022 KAKAO BLIND RECRUITMENT (0) | 2022.06.11 |
[Programmers] level4 - 올바른 괄호의 갯수 (Python) : 연습문제 (0) | 2022.06.11 |
[Programmers] level4 - 도둑질 (Python) : 동적계획법 (0) | 2022.06.10 |
[Programmers] level3 - 네트워크 (Python) : DFS/BFS (0) | 2022.06.10 |