inflearn logo
강의

Khóa học

Chia sẻ kiến thức

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()하면 왜 값이 달라지나요?

358

wooli60499

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

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

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

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

0

wooli60499

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

기존에 윈도우 10으로 잘 써왔는데 윈도우 11로 바꾸고 나서 채점이 안됩니다.

1

77

2

스택에서 ')'을 만나는 경우

0

78

3

문제가 어디있나요?

0

65

2

변수 or 함수명

0

61

1

침몰하는 타이타닉 문제 질문입니다

0

56

1

AA.py 책점 에러

0

57

1

오늘 구매했는데 파이썬 자료구조 궁금한거 있으면 답변이 잘 될까요.

0

111

2

5.동전분배하기 문제 밑에코드도 정답이될까요?

0

110

1

아나그램 비교 코드

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