해결된 질문
작성
·
91
1
안녕하세요, 강사님!
강의 잘 듣고 있습니다.
def recur(idx, A, B, C, D, E):
global answer, result, tmp
if idx == N:
if a <= A and b <= B and c <= C and d <= D: # 모든 영양소를 충족했다면
if answer > E:
answer = min(answer, E)
result = tmp[:]
return
return
# 재료를 사용한 경우
tmp.append(idx+1)
recur(idx+1, A+ingre[idx][0], B+ingre[idx][1], C+ingre[idx][2], D+ingre[idx][3], E+ingre[idx][4])
# 재료를 사용하지 않는 경우
tmp.pop()
recur(idx+1, A, B, C, D, E)
N = int(input())
a, b, c, d = map(int, input().split())
ingre = [list(map(int, input().split())) for _ in range(N)]
answer = 999999999999999999999
tmp = []
result = []
recur(0, 0, 0, 0, 0, 0)
if answer == 999999999999999999999:
print(-1)
print()
else:
print(answer)
print(*result)
강의에서 작성해주신 기본 코드 기반으로 완성해보았는데, 계속해서 99%에서 틀렸습니다라고 뜹니다..!
알고리즘 로직상 이상이 없어보이는데, 제가 놓쳐서 고쳐야할 부분 알려주심 감사하겠습니다..!
답변 2
1
아래 AI 인턴의 답변에 똑같이 99%에서 실패하는 학생 분의 질문이 있습니다!
같은 내용으로 보여서 한번 확인해보시고 그래도 해결이 안되신다면 다시 답글 남겨주세요! 좋은 질문 감사합니다 :)!
0
안녕하세요, 인프런 AI 인턴입니다.
설기똥꼬님의 질문에 관련하여 5강 최적화 19942번 질문드립니다. 글이 유사한 상황에 대한 해답을 제시하고 있는 것 같습니다. 질문하신 코드와 관련해 99%에서 오류가 발생하는 부분에 대해, 이 글에서는 글로벌 변수의 초기화, 재귀 함수의 방문 처리 및 해제에 대한 부연 설명과 함께 코드의 수정이 필요한 부분에 대해서도 설명하고 있습니다.
특히, 최적화 문제에서 영양소 조건을 확인하여 정답을 업데이트하는 코드 부분에 관한 설명이 설기똥꼬님 코드의 오류를 해결하는 데 도움이 될 수 있습니다. 해당 답변에서는 인덱스의 끝에 도달했을 때에 만족하는 조건을 검사하고 정답을 업데이트하는 로직에 대해서 다루고 있습니다. 아울러 재귀함수에서 해당 조건문을 어떻게 수정해야 하는지에 대한 구체적인 예시와 설명을 제공하고 있습니다.
질문하신 내용과 비교해, 원하는 결과를 얻지 못하는 문제의 원인이 여기에 있을 수 있다고 생각됩니다. 이 외에도, 재귀함수의 탐색 조건 및 탐색 종료 조건을 검토하여, 알고리즘의 모든 가능한 경우의 수를 올바르게 탐색하고 있는지 확인해 보시기 바랍니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
답변 감사합니다 !! 👍👍좋은 하루 보내세요~!