티스토리 뷰

728x90
반응형

 

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

 

코딩테스트 연습 - 땅따먹기

땅따먹기 게임을 하려고 합니다. 땅따먹기 게임의 땅(land)은 총 N행 4열로 이루어져 있고, 모든 칸에는 점수가 쓰여 있습니다. 1행부터 땅을 밟으며 한 행씩 내려올 때, 각 행의 4칸 중 한 칸만 밟

programmers.co.kr

 

 


 

 

<나의 풀이>

def solution(land):
    for i in range(1, len(land)):
        for j in range(len(land[0])):
            # 1. max(land[i -1][: j] + land[i - 1][j + 1:]) 
            # ㄴ이전 리스트에서 현재 인덱스 부분만 제외하고 최대값 구하기

            # 2. + land[i][j]
            # ㄴ위에서 구한 최대값을 현재 인덱스의 요소와 더하기

            # 3. land[i][j]
            # ㄴ 더해준 값을 현재 리스트 인덱스의 값으로 변경
            land[i][j] = max(land[i -1][: j] + land[i - 1][j + 1:]) + land[i][j]
            
    # land의 마지막 리스트에서 최대값을 출력
    return max(land[-1])

 

 

<다른 사람의 풀이>

import copy

def hopscotch(board, size):
    result = 0
    # 땅따먹기 게임으로 얻을 수 있는 최대 점수는?
    for i in range(1,size):
        for j in range(4):
            temp = copy.deepcopy(board[i-1])
            temp[j] = 0
            board[i][j]+=max(temp)
    result = max(board[-1])
    return result
    
    
# <배운점> 
# => deepcopy를 이용해서 문제를 푼 점
728x90
반응형
댓글