인프런 커뮤니티 질문&답변

kongkongkong님의 프로필 이미지
kongkongkong

작성한 질문수

파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)

Section 7-2) 휴가

작성

·

93

·

수정됨

0

안녕하세요, 강사님.

 

제 코드가 지저분하긴 하지만 (L, days라는 변수 두개 씀) 이 로직도 맞는 걸까요?

테스트 돌려보면 예시들은 success로 나오긴 합니다. 근데 확신이 안 서서요..

 

참고로 저는 t, p 리스트를 인덱스 0부터 시작했습니다.

 


import sys
sys.stdin=open("input.txt", "r")

def DFS(L, days, income): 
    global answer 
    if L>n: 
        return 
    if days>n: 
        return
    if days==n:
        if answer<income: 
            answer=income 
    else: 
        DFS(L+1, days+t[days], income+p[days]) 
        DFS(L+1, days+1, income)

n=int(input()) 
t=list() 
p=list() 
for _ in range(n): 
    tt,pp=map(int,input().split())
    t.append(tt) 
    p.append(pp) 
answer=-214700000 
DFS(0,0,0)
print(answer)

 

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

제공된 정보 내에서는 프로그래밍 및 알고리즘 문제 해결에 관한 직접적인 답변을 제공하고 있지 않습니다. 그러나 프로그래밍 학습 및 문제 해결 과정에 있어서 자주 발생할 수 있는 일반적인 조언을 드리겠습니다.

코드의 로직이 예상한 대로 동작하는지 확신이 들지 않을 때, 다양한 케이스를 직접 테스트해보는 것이 중요합니다. 제공하신 코드에 따라 이미 기본적인 테스트는 수행하셨다고 하니, 다음 단계로는 더 다양하고 복잡한 테스트 케이스를 직접 구성해보시는 것을 권장합니다.

또한, 코드의 정확성만큼이나 중요한 것이 코드의 가독성입니다. 변수명이나 함수 구조를 좀 더 명확하게 하여 다른 사람이나 미래의 자신이 코드를 보았을 때 이해하기 쉽게 만드는 것이 좋습니다. ‘L’, ‘days’라는 변수명도 명확한 의미를 전달할 수 있도록 조금 더 구체적인 이름으로 변경하는 것을 고려해보세요.

마지막으로, 재귀 함수를 사용하여 문제를 해결하는 경우에는 재귀의 깊이가 깊어질 때 발생할 수 있는 스택 오버플로우를 고려하여 코드를 작성하는 것이 중요합니다. 주어진 문제의 조건에 따라 최악의 경우에도 안전하게 작동할 수 있도록 설계해야 합니다.

질문하신 내용과 직접적으로 관련된 답변을 드리지 못해 죄송합니다. 더 자세한 도움이 필요하시다면, 해당 강의의 Q&A 섹션을 활용하거나 프로그래밍 커뮤니티에서 질문을 통해 도움을 받아보시기 바랍니다.

kongkongkong님의 프로필 이미지
kongkongkong

작성한 질문수

질문하기