728x90
반응형
문제 출처: https://school.programmers.co.kr/learn/courses/30/lessons/131130
풀이:
틀린 풀이.
import copy
def solution(cards):
res = []
copy_cards = copy.copy(cards)
for i in range(len(cards)):
left = 0
while cards[i] != 0:
next = cards[i] -1
cards[i], i = 0, next
left += 1
res.append(left * (len(cards)-left-1))
cards = copy.copy(copy_cards)
res.sort()
return res[-1]
res.append(left * (len(cards)-left-1))
이 부분이 문제이다. left 가 3 인데 right가 0 일경우도 있기 때문에
그럼 남은걸로 한 번 더 하면 되는데 코드가 길어질것 같아 풀이 방법을 바꿨다
def solution(cards):
res = []
for i in range(len(cards)):
left = 0
while cards[i] != 0:
next = cards[i] -1
cards[i], i = 0, next
left += 1
res.append(left)
res.sort()
return res[-1] * res[-2]
중요 포인트
인덱스를 0 부터 시작해도 4,7,1,8 이렇게나오고
인덱스를 7 부터 시작해도 7,1,8,4 이렇게 4개가 나오는건 똑같다.
또 박스는 두번 열 수 없으므로
res 를 정렬하고 큰 값 2개를 곱해주면 된다.
좀 어려운 문제
반응형
댓글