[프로그래머스 level2] 땅따먹기 python

IT공부중·2020년 3월 16일
1

알고리즘

목록 보기
2/49

https://programmers.co.kr/learn/courses/30/lessons/12913

1 2 3 5
5 6 7 8
4 3 2 1

이 있을 때 자기 자신과 같은 열은 더하지 못하므로
자기 자신의 열을 뺀 나머지 중 최대값을 밑으로 계속 더해줬다.
마지막 줄의 max값을 출력하도록 하였다.

def solution(land):

    for i in range(1,len(land)):
        for j in range(len(land[0])):
            land[i][j] += max(land[i-1][:j] + land[i-1][j+1:])

    return max(land[len(land)-1])

두 번째 줄 부터 시작하는 반복문이다 밑의

 land[i][j] += max(land[i-1][:j] + land[i-1][j+1:]

코드는 land[i][j] + 그 위에 줄의 j열 빼고 만든 리스트에서 max값을 뽑아서 더해주라는 뜻이다. land[i-1][:j]를 하면 j열 앞까지 리스트가 뽑히고 land[i-1][j+1:]을 하면 j+1열부터 끝까지 리스트가 뽑혀서 리스트 끼리 더하면 합쳐진 리스트가 된다. 그 리스트에서 max 값을 더해주라는 뜻이다!!

이제 마지막 줄의 max 값을 return하면 답이 된다.

profile
3년차 프론트엔드 개발자 문건우입니다.

1개의 댓글

comment-user-thumbnail
2022년 10월 12일

좋은 풀이 잘 봤습니다. 감사합니다

답글 달기