저고데

[프로그래머스]혼자 놀기의 달인 본문

프로그래머스

[프로그래머스]혼자 놀기의 달인

진철 2023. 2. 14. 23:15
728x90
반응형

문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/131130

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

코드를 작성하기 위한 순서는 다음과 같다.

1. 박스를 열었는지 판단하기 위해서 check 리스트를 만들어준다. 

2. for문과 while문을 사용하여 연 박스를 만났다면 반목문을 종료하고 박스의 갯수를 append한다.

 

def solution(cards):
    answer = 0
    check = [0 for _ in range(len(cards))] #1번 : 열였다면 1, 연 적이 없다면 0
    total = []
    for index, card in enumerate(cards):
        if check[index] == 0:
            count = 1
            check[index] = 1
            index = card-1
            while True:
                if check[index] == 0:
                    count += 1
                    check[index] = 1
                    index = cards[index]-1
                else:
                    break
            total.append(count)
    total.sort(reverse = True)
    if len(total) <= 1: #배열의 길이가 1이하일 때를 따로 구분해야 런타임에러가 발생하지 않는다.
        return 0
    else:
        return total[0]*total[1]

 

코드를 작성하는 것보다 문제를 해석하는 데 시간이 많이 걸렸던 문제이다.

enumerate를 사용하여 배열의 인덱스 값을 보다 편안하게 사용하였고, 상자의 개봉 여부를 나타나는 배열을 새로 만들어주는 것이 문제의 핵심이었다.

728x90
반응형