[Programmers] 정수 삼각형
2021. 7. 29. 22:54ㆍProgramming/Problem Solving
728x90
https://programmers.co.kr/learn/courses/30/lessons/43105
코딩테스트 연습 - 정수 삼각형
[[7], [3, 8], [8, 1, 0], [2, 7, 4, 4], [4, 5, 2, 6, 5]] 30
programmers.co.kr
전형적인 DP 문제다.
왜 이문제가 level 3인지는 모르겠으나..
def solution(triangle):
answer = 0
dp = [[0]*len(triangle) for _ in range(len(triangle))]
dp[0][0] = triangle[0][0]
for i in range(1, len(triangle)):
triangle[i][0] += triangle[i-1][0]
triangle[i][len(triangle[i])-1] += triangle[i-1][len(triangle[i-1])-1]
for i in range(2, len(triangle)):
for j in range(1, len(triangle[i])-1):
triangle[i][j] += max(triangle[i-1][j], triangle[i-1][j-1])
return max(triangle[len(triangle)-1])
아 파이썬에서 max 함수나 min 함수는 느리다고 합니다!!
왜 느리냐면 max(a,i)를 해서 새로운 값을 만들고 다시 a에 넣는다나..
그리고 for i in range(0,10): 이 구문도 range(0,10)라는 자료형을 만들어서 여기서 돌아가느라 .. 느리대요
하지만 while True로 계속 if문 비교하는거보단 빠름 ㅋㅋ
import time
start = time.time()
a = 0
for i in range(10000000):
if a<i:
a = i
print(time.time()-start)
위 코드는 시간이 0.4380989074707031
import time
start = time.time()
a = 0
for i in range(10000000):
a = max(a,i)
print(time.time()-start)
위 코드는 1.0912463665008545
따라서 귀찮더라도.. 위의 코드를 사용하는것이!!
'Programming > Problem Solving' 카테고리의 다른 글
[BOJ] 8972 미친 아두이노 - Python (0) | 2021.08.02 |
---|---|
[BOJ] 3107 IPv6 - Python (0) | 2021.08.02 |
[BOJ] 17471 게리맨더링 - Python (0) | 2021.07.29 |
[BOJ] 2461 대표선수 - Python (0) | 2021.07.26 |
[Programmers] 모두 0으로 만들기 (0) | 2021.07.25 |