저고데

[프로그래머스]피로도 본문

프로그래머스

[프로그래머스]피로도

진철 2023. 2. 3. 22:18
728x90
반응형

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

 

프로그래머스

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

programmers.co.kr

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

1. dungeons의 크기가 8이하이기 때문에 permutations을 사용해준다.

2. 모든 경우의 수를 구한 후, 조건에 맞으면 cnt+1를 해주고 max를 사용하여 가장 큰 값을 반환한다.

from itertools import permutations #1번

def solution(k, dungeons):
    answer = -1
    for i in permutations(dungeons, len(dungeons)): #1번, 2번
        total=k
        cnt=0
        for j in i:
            if total>=j[0]: #현재 피로도가 최소 피로도보다 커서 던전 입장이 가능할 때이다.
                cnt+=1 #2번
                total-=j[1]
            else:
                break
        answer=max(answer, cnt) #2번
    return answer

시간복잡도가 그리 크지 않은 문제였기 때문에 permutations 모듈을 사용하여 편하게 모든 경우의 수를 구할 수 있었다.

알고리즘을 구현할 때, 가장 기초이자 설계에서 시간복잡도를 계산하는 것은 매우 중요하다.

데이터의 크기와 시간복잡도에 따라서 그에 맞는 효율적인 알고리즘이 다르기 때문에, 항상 문제를 읽을 때는 이를 특별히 더 신경써야할 듯하다.

728x90
반응형

'프로그래머스' 카테고리의 다른 글

[프로그래머스]전화번호 목록  (0) 2023.02.04
[프로그래머스]더 맵게  (0) 2023.02.03
[프로그래머스][3차]압축  (0) 2023.02.03
[프로그래머스]땅따먹기  (0) 2023.02.03
[프로그래머스]야근 지수  (0) 2023.02.02