inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

11. 수들의 조합(DFS)

이렇게 풀어도 되나요?

138

코딩코딩코딩코

작성한 질문수 25

0

n,k = map(int, input().split())
data = list(map(int, input().split()))
m = int(input())

cnt = 0
def dfs(l,s,c):
    global cnt
    if l == n:
        if c == k:
            if s % m == 0:
                cnt += 1
        return
    dfs(l+1,s+data[l],c+1)
    dfs(l + 1, s, c)
dfs(0,0,0)
print(cnt)

이렇게 풀어도 되나요?

python 코딩-테스트

답변 1

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.

네, 제시해주신 파이썬 코드는 주어진 문제 조건(수열에서 k개의 수를 선택해서 그 합이 m으로 나누어떨어지는 경우의 수를 찾는 문제)에 대해 잘 작성되었고, DFS(깊이 우선 탐색)를 이용하여 문제를 해결하는 유효한 방법입니다.

제시된 코드는 다음과 같은 프로세스로 작동합니다:
1. dfs 함수는 깊이(l), 현재까지의 합(s), 선택된 수의 개수(c)를 인자로 받습니다.
2. 탐색의 깊이가 입력 값 n에 도달하면, 선택된 수의 개수가 주어진 k와 같은지, 그리고 현재까지의 합이 m으로 나누어떨어지는지 확인하여 조건에 맞는 경우 cnt를 증가시킵니다.
3. 각 단계에서 다음 수를 선택하는 경우와 선택하지 않는 경우로 나누어 다음 단계의 dfs 함수를 호출합니다.

코드의 접근 방식과 구현이 문제의 요구 사항을 충족하므로 이대로 사용하셔도 됩니다. 다만, 실제 코딩 테스트 환경에서는 실행 시간, 메모리 사용량 등을 고려하여 최적화가 필요할 수 있습니다. 추가적으로 다른 풀이 방식이나 최적화 방안에 대해서도 고민해 보시는 것을 추천드립니다.

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

1

77

2

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

0

78

3

문제가 어디있나요?

0

66

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

165

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

128

2

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

0

91

1