본문 바로가기
프로그래머스/2단계

(Python/LV2) 혼자 놀기의 달인

by windy7271 2022. 11. 28.
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개를 곱해주면 된다.

 

좀 어려운 문제

 

 

반응형

댓글