inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)

7. 동전 교환-Cut Edge Tech

sum 계산시

275

낭낭

작성한 질문수 3

0

def DFS(L, sum):

  global res

  

  if L > res:   ## Cut Edge

    return

  if sum > m:

    return

  if sum == m:

    if L < res:

      res = L

      

  else:

    for i in range(n):

      sum += a[i]

      DFS(L+1, sum)

 

안녕하세요! 문제 풀다가 궁금한 점이 생겨 질문드립니다.

sum을 넘겨줄때 DFS(L+1, sum + a[i])가 아닌 위 하늘색 부분처럼 미리 계산해서 넘겨주면 결과가 다르게 나오던데 제 눈에는 같아 보여서요...! 결과가 달라지는 이유가 궁금합니다.

python 코테 준비 같이 해요!

답변 1

1

김태원

안녕하세요^^

 for i in range(n):

      sum += a[i]

      DFS(L+1, sum)

위와 같이 재귀를 호출하기 전에 sum에 미리 더해주면 백을 해서 되돌아 왔을 때 원래 sum값으로 되돌아와 다른 경우를 해야 하는데  sum에 a[i]가 더해진 값으로 되돌아 옵니다. 그래서 

 for i in range(n):

      sum += a[i]

      DFS(L+1, sum)

      sum -= a[i]

처럼 재귀호출 아래에서 sum에서 a[i]값을 빼주어야 합니다.

 

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

1

104

2

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

0

113

3

문제가 어디있나요?

0

87

2

변수 or 함수명

0

81

1

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

0

72

1

AA.py 책점 에러

0

65

1

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

0

117

2

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

0

118

1

아나그램 비교 코드

0

126

2

AA.PY파일 복사 후 채점 진행할때 오류 발생합니다.

0

164

2

문제 링크가있나여?

0

155

2

채점기 Time Limit Exceeded 오류 문의

1

183

2

동적계획법은 사용하는 문제

0

135

2

제 코드 좀 봐주세요

0

155

1

예외가 존재할 가능성?

0

100

1

3번이 안풀립니다

0

99

0

5번 틀림

0

125

0

오류원인?

0

106

0

리스트 선언

0

117

1

침몰하는 타이타닉(그리디) 문제 질문

0

115

1

알고리즘

0

75

1

코딩테스트

0

98

1

DFS 순서 질문드립니다.

0

139

2

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

0

103

1