백준 1932 python

HJ seo·2022년 8월 13일
0

Coding Test(Python)

목록 보기
17/45

문제 링크

from sys import stdin

num = int(stdin.readline().strip())
lst = [[int(stdin.readline().strip())] for _ in range(num)]
    
for i in range(1,num):
    for j in range(i+1):
        if j == 0:
            lst[i][j] += lst[i-1][j]
        elif j == i:
            lst[i][j] += lst[i-1][-1]
        else:
            lst[i][j] += max(lst[i-1][j-1:j+1])
    # print(lst[i])
            
print(max(lst[-1]))

약속이 점심저녁으로 잡히게 된 날이라 랜덤 문제풀이는 아니고, 어떤 식으로 풀면 되겠다고 하는 것이 바로 보이는 것을 풀게 되었다.

ifelif 문은 else에서 lst의 2번째 범위에 maxmin을 적절히 집어넣었을 때 6줄을 1줄로 줄이는 신박함을 쓸 수도 있지만 이경우 알아보기가 지저분해서 패스..!..

원리는 i번째 줄의 j번째 숫자에 차례대로 j == 0일 때는 맨 왼쪽에 있는 숫자 바로 위의 숫자를 더해주는 작업을 하고, j == i일 때는 맨 오른쪽에 있는 숫자를, 나머지(else)는 해당 숫자의 양쪽 위 숫자중 큰 것을 더해주는 식으로 코드를 구현하고 구하는 대상이 가장 아래쪽의 최댓값이므로 max(lst[-1])을 프린트해준 것이다.


다짐 : 일요일까지 글을 완성시켜보자!!!

profile
다양한 분야에 관심이 많은 초보 개발자 입니다.

0개의 댓글