[백준, 프로그래머스] 1932, 정수삼각형

kiteday·2025년 7월 21일
0

코딩테스트

목록 보기
24/46

백준 문제바로가기
프로그래머스 문제바로가기

맨 처음엔 greedy라고 생각해서 문제파악을 잘못했다. 결국 dp연습겸 dp로 최종코드를 완성했다. 핵심은 아래서부터 더해서 올라올 것. 계속 위에서부터 더하는 방식으로도 짤 순 있다.

n = int(input())
layer = [0]*n

layer = [list(map(int, input().split())) for _ in range(n)]

for i in range(n-2, -1, -1):
    for j in range(i+1):
        layer[i][j] += max(layer[i+1][j], layer[i+1][j+1])
print(layer[0][0])

프로그래머스는 다른 풀이도 제공하기 때문에 다른 사람 풀이도 봤다.
그 중 눈에 띄는 방법

solution = lambda t, l = []: max(l) if not t else solution(t[1:], [max(x,y)+z for x,y,z in zip([0]+l, l+[0], t[0])])

완전 파이서닉하게 작성된 코드다! 확실히 초보자가 읽기엔 쉽지 않지만 이렇게도 작성할 수 있다는 게 놀랍다.

profile
공부

0개의 댓글