-
[프로그래머스] 땅따먹기Engineering WIKI/Programmers 2022. 5. 26. 14:24
코딩테스트 연습 - 땅따먹기
땅따먹기 게임을 하려고 합니다. 땅따먹기 게임의 땅(land)은 총 N행 4열로 이루어져 있고, 모든 칸에는 점수가 쓰여 있습니다. 1행부터 땅을 밟으며 한 행씩 내려올 때, 각 행의 4칸 중 한 칸만 밟
programmers.co.kr
내 풀이 1차시도 실패
def solution(land_list): answer = 0 index = -1 for land in land_list: if index != land.index(max(land)): answer += max(land) else: land.remove(max(land)) answer += max(land) index = land.index(max(land)) return answer
- DP를 이용하는 문제이다.
- 맨 위에 행은 냅둬도 되어서 1부터 시작한다.
- 자신의 열은 제외하고 가장 큰 값을 구한다.
다른 사람 풀이
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] + 그 위에 줄의 j열 빼고 만든 리스트에서 max값을 뽑아서 더해주라는 뜻이다. land[i-1][:j]를 하면 j열 앞까지 리스트가 뽑히고 land[i-1][j+1:]을 하면 j+1열부터 끝까지 리스트가 뽑혀서 리스트 끼리 더하면 합쳐진 리스트가 된다. 그 리스트에서 max 값을 더해주라는 뜻이다!!
다른 사람 풀이 2
def solution(land): answer = 0 for i in range(1,len(land)): land[i][0] += max(land[i-1][1], land[i-1][2], land[i-1][3]) land[i][1] += max(land[i-1][0], land[i-1][2], land[i-1][3]) land[i][2] += max(land[i-1][0], land[i-1][1], land[i-1][3]) land[i][3] += max(land[i-1][0], land[i-1][1], land[i-1][2]) return max(land[-1])
'Engineering WIKI > Programmers' 카테고리의 다른 글
[프로그래머스] 영어 끝말잇기 (0) 2022.06.01 [프로그래머스] 가장 큰 정사각형 (0) 2022.06.01 [프로그래머스] 구명보트 (0) 2022.05.31 [프로그래머스] [1차] 캐시 (0) 2022.05.30 [프로그래머스] 다음 큰 숫자 (0) 2022.05.25 [프로그래머스] 올바른 괄호 (0) 2022.05.24 [프로그래머스] 숫자의 표현 (0) 2022.05.24 [프로그래머스] 큰 수 만들기 (0) 2022.05.24