[Programmers] 땅따먹기

김가영·2021년 2월 10일
0

Algorithm

목록 보기
43/78

문제 바로가기

각 행 에서 가장 큰 두 개의 값을 가지는 index 를 firstsecond 에 저장한다.

    for y in range(0, len(land)-1):
        if land[y][0] > land[y][1]:
            first,second = 0,1
        else:
            first,second = 1,0
        for i in (2,3):
            if land[y][i] > land[y][first]:
                second = first
                first = i
            elif land[y][i] > land[y][second]:
                second = i

다음 행의 값을 넣어준다

        for i in range(4):
            if i != first:
                land[y + 1][i] += land[y][first]
            else:
                land[y + 1][i] += land[y][second]

shorter solution


방법은 똑같지만 더 간단한 방법. 코드는 간단하지만 시간은 2배정도 더 걸린다. 여기에서는 max 값을 매번 새로 계산하지만 기존 코드에서는 행마다 max 값을 한 번 계산하여 이용하기 때문.

profile
개발블로그

0개의 댓글