inflearn logo
강의

講義

知識共有

Pythonアルゴリズム問題プール入門(コーディングテスト対比)

5. コイン分配(DFS)

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

358

wooli60499

投稿した質問数 8

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

回答 2

3

codingcamp

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

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

0

wooli60499

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

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

0

76

2

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

0

78

3

문제가 어디있나요?

0

64

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

125

2

left, right를 사용한 풀이법에 대한 질문입니다

0

91

1