강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của wooli60499
wooli60499

câu hỏi đã được viết

Giới thiệu về giải bài toán bằng thuật toán Python (chuẩn bị cho bài kiểm tra viết mã)

5. Phân phối tiền xu (DFS)

money.sort()하면 왜 값이 달라지나요?

Viết

·

349

0

처음에 제가 짠 코드는 주석부분입니다. 최대 최소의 차를 구하는 과정에서 리스트를 정렬 한 후 양 끝값을 빼는 방식으로 코드를 짰었는데 값이 이상하여 money를 찍어보니,  money.sort()코드가 있으면 money값이 음수값이 나오는 등 제대로 값이 입력이 안되는 모습이 보였습니다.  차를 max-min으로 하던 리스트로 하던 상관없이 sort()의 여부에 따라 값이 달라지더라구요.

왜 이런 현상이 나오는건지 이해가 잘 안가서 혹시 설명을 부탁드릴 수 있을까요?ㅠㅠ

n=7
coin =[8,9,11,12,23,15,17]
ans = []
min_ans = 2147000000
money = [0 for i in range(3)]

def DFS(node):
global min_ans
if node == n:
#money.sort()
#ans = money[2]-money[0]
#print(ans)
ans = max(money)-min(money)
# print(ans)
# if money[0]!=money[1] and money[1]!=money[2] and money[0]!=money[2]:
# if min_ans > ans:
# min_ans = ans
if min_ans > ans:
temp = set()
for i in range(3):
temp.add(money[i])
if len(temp)==3:
min_ans = ans

else:
for i in range(3):
money[i]+=coin[node]
DFS(node+1)
money[i]-=coin[node]

DFS(0)
print(min_ans)
python코테 준비 같이 해요!

Câu trả lời 2

3

codingcamp님의 프로필 이미지
codingcamp
Người chia sẻ kiến thức

money[0]값,  money[1]값,  money[2]값이 각각 무엇을 의미하는지 생각해보세요.

하나의 경우가 완성된 상태에서 이 값들을 정렬해서 서로 바꾸어 버리면 다음 경우를 만들때 어떤 일이 일어나는지 연필로 DFS트리를 만들어 가면서 확인해보시기 바랍니다.

0

wooli60499님의 프로필 이미지
wooli60499
Người đặt câu hỏi

아 인덱스 위치가 계속 바뀌게 되면서 해당 값이 아닌 다른값을 빼주게 되는 상황이 발생해 버리는군요. 조금만 더 생각해 봤으면 해결했을 수 있었던 부분일건데 ㅠㅠ 감사합니다!

Hình ảnh hồ sơ của wooli60499
wooli60499

câu hỏi đã được viết

Đặt câu hỏi