728x90
반응형
코드트리 | 코딩테스트 준비를 위한 알고리즘 정석
국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요.
www.codetree.ai
일의 휴가 동안 외주 개발을 하여 수익을 최대화 하려고 합니다. 수행할 수 있는 외주 작업이 하루에 한 개씩 있고, 각 외주 작업은 수행 완료하는데 걸리는 기한 와 이를 완료 했을 때의 수익 가 주어집니다. 두 개 이상의 외주 작업은 동시에 수행할 수 없으며, 휴가 기간 이후로는 일을 할 수 없다고 할 때 외주 수익의 최대값을 출력하는 코드를 작성해보세요.
예를 들어 이고 외주 작업이 다음과 같이 주어진 경우를 생각해봅시다.
번 외주를 같이 하게 된다면 일해야하는 기간이 겹치게 되어 불가능합니다.
번 외주를 같이 하게 된다면 겹치지 않게 일을 할 수 있고, 총 만큼의 돈을 얻게 됩니다.
번 외주만 하게 된다면 만큼의 돈을 얻게 됩니다.
입력 형식
첫 번째 줄에는 이 주어지고,
두 번째 줄부터 번째 줄까지는 각 일자에 수행할 수 있는 외주 작업의 기한 와 수익 가 공백을 사이에 두고 주어집니다.
출력 형식
가능한 외주 수익의 최대값을 출력합니다.
풀이
Code
import sys
input = sys.stdin.readline
ans = 0
# 1. 백트래킹 함수 정의
def backtrackig(idx, cost) :
global ans
# 1-1. 종료 조건
if idx >= n :
# 마지막 인덱스에 도달한 경우
if idx == n :
ans = max(ans, cost)
return
# 1-2. 해당 외주를 하지 않는 경우
backtrackig(idx + 1, cost)
# 1-3. 해당 외주를 하는 경우
backtrackig(idx + works[idx][0], cost + works[idx][1])
def solution(n, works) :
global ans
# 2. 백트래킹 실행
backtrackig(0, 0)
# 3. 결과 출력
print(ans)
if __name__ == '__main__' :
n = int(input())
works = [list(map(int, input().split())) for _ in range(n)]
solution(n, works)
728x90
반응형
'Coding Test > Codetree' 카테고리의 다른 글
[Python/Codetree] 병원 거리 최소화하기 (0) | 2023.09.30 |
---|---|
[Python/Codetree] 나무 타이쿤 (0) | 2023.09.29 |
[Python/Codetree] 연산자 배치하기 (0) | 2023.09.29 |
[Python/Codetree] 조삼모사 (0) | 2023.09.27 |
[Python/Codetree] 바이러스 검사 (1) | 2023.09.25 |