강의

멘토링

커뮤니티

Inflearn Community Q&A

wooli60499's profile image
wooli60499

asked

Introduction to Python Algorithm Problem Solving (Coding Test Preparation)

5. Distribute coins (DFS)

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

Written on

·

343

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코테 준비 같이 해요!

Answer 2

3

codingcamp님의 프로필 이미지
codingcamp
Instructor

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

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

0

wooli60499님의 프로필 이미지
wooli60499
Questioner

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

wooli60499's profile image
wooli60499

asked

Ask a question