5.동전분배하기 문제 밑에코드도 정답이될까요?
110
2 asked
n = int(input())
c = []
for _ in range(n):
b = int(input())
c.append(b)
def DFS(L,first,second,third):
global best
a = max(first,second,third) - min(first,second,third)
if a >= best:
return
if L == n:
if a < best:
best = a
else:
for i in range(n):
if ch[i] == 0:
ch[i] = 1
DFS(L+1,first+c[i],second,third)
DFS(L+1,first,second+c[i],third)
DFS(L+1,first,second,third+c[i])
ch[i] = 0
ch = [0] * n
best = 10000000000000
DFS(0,0,0,0)
print(best)
Answer 1
0
안녕하세요, 인프런 AI 인턴입니다.
yswo2100님께서 작성하신 DFS 코드는 동전 분배 문제에서 상태 트리를 활용하여 가능한 모든 경우의 수를 탐색하고 있습니다. 코드를 분석하면, 각 동전이 세 사람에게 분배될 때 최대 금액과 최소 금액의 차이를 최소화하도록 하는 목표가 있는 것으로 보입니다.
몇 가지 주의해야 할 점과 개선 방안을 말씀드리겠습니다:
비교 조건:
DFS함수 안에서a >= best조건으로 바로return을 하고 있습니다. 이 조건은 탐색 중인 현재 상태에서 이미 최악의 경우보다 나쁜 경우라면 더 이상 탐색할 필요가 없다는 의미입니다. 이 조건은 올바른 가지치기 방법이지만, 다른 상태들에서 더 나은 경우가 존재할 가능성을 놓칠 수 있으므로 코드의 의미를 잘 이해하고 사용해야 합니다.중복 DFS 호출: 현재 코드는 모든 동전을 여러 번 추가할 수 있는 구조를 가지고 있습니다. 중복되는 상태도 포함될 수 있으므로 이러한 구조가 올바른지 확인해야 합니다.
동전 선택 변수: 코드에서
ch배열을 활용하여 이미 사용된 동전을 추적하고 있습니다. 이는 중복을 피하는 데 유용하지만, 현재 코드에서는 각 동전을 세 사람에게 세 번 추가하는 방식으로 보입니다. 이러한 선택 방법이 논리적으로 맞는지 체크해 보아야 합니다.
추천 자료
이전에 유사한 질문들이 있어 참조하시는 것도 도움이 될 수 있습니다:
- “이렇게 해도 괜찮은건가요?”: 이 질문에서는 DFS를 사용한 다른 방식의 접근과 효율성에 대해 논의하고 있습니다.
- “시간 초과”: DFS를 구현하면서 시간 초과에 대한 해결책을 찾는 방법에 대한 토론입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
기존에 윈도우 10으로 잘 써왔는데 윈도우 11로 바꾸고 나서 채점이 안됩니다.
0
76
2
스택에서 ')'을 만나는 경우
0
78
3
문제가 어디있나요?
0
65
2
변수 or 함수명
0
61
1
침몰하는 타이타닉 문제 질문입니다
0
56
1
AA.py 책점 에러
0
57
1
오늘 구매했는데 파이썬 자료구조 궁금한거 있으면 답변이 잘 될까요.
0
111
2
아나그램 비교 코드
0
116
2
AA.PY파일 복사 후 채점 진행할때 오류 발생합니다.
0
160
2
문제 링크가있나여?
0
147
2
채점기 Time Limit Exceeded 오류 문의
1
163
2
동적계획법은 사용하는 문제
0
126
2
제 코드 좀 봐주세요
0
148
1
예외가 존재할 가능성?
0
97
1
3번이 안풀립니다
0
93
0
5번 틀림
0
114
0
오류원인?
0
98
0
리스트 선언
0
106
1
침몰하는 타이타닉(그리디) 문제 질문
0
109
1
알고리즘
0
69
1
코딩테스트
0
92
1
DFS 순서 질문드립니다.
0
126
2
left, right를 사용한 풀이법에 대한 질문입니다
0
91
1
섹션 9 Dynamic Programming (동적 계획법) 최대부분증가수열
0
116
2

