inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

10. 조합구하기(DFS)

안녕하세요? 강의에서 말씀해주신 방법의 응용에 대해 질문 드립니다.

해결된 질문

278

drather

작성한 질문수 6

0

혹시, 강의에 나오지 않은 다른 문제에 대한 질문은 받지 않으신다면 아래 내용은 읽지 않으셔도 됩니다!!

안녕하세요? 강의에서 말씀해주신 방법의 응용에 대해 질문 드립니다. 

이 문제를 열심히 풀어보고 난 뒤 숙달을 위해 백준사이트의 N과M 시리즈 문제들을 풀어보고 있습니다. 

그 중, 다른 문제들은 해결했지만, '원소간 중복을 허용하는 조합'을 뽑아내는 문제를 해결하는데 어려움이 있습니다. 아래 링크가

"N개의 숫자 중, 중복을 허용하여 M개를 뽑아 만들 수 있는 '조합'을 출력하는 문제"입니다. 

https://www.acmicpc.net/problem/15657

이 문제를 해결하고자 한다면, 선생님께서 알려주신 코드를 어떻게 고쳐야 풀 수 있을까요? 

위 질문 외에, 혹시 조금 더 상급 수준의 코스를 만들어 올려주실 생각이 있으신지 궁금합니다. 선생님의 코스를 따라가며 많이 실력이 늘었기 때문입니다. 

무더워가 어느정도 지나가고, 날이 점점 선선해지는 듯한 계절입니다. 이럴때일수록 몸 건강히 챙기시고, 코로나도 각별히 유의하시기 바랍니다. 

python 코테 준비 같이 해요!

답변 2

1

김태원

제공한 조합 코드에서 DFS호출부분을 

DFS(L+1, i) 와 같이 바꾸면 중복조합이 됩니다. 문의하신 백준문제를 조합문제 코드를  수정해서 풀어보면 아래와 같습니다.

def DFS(L, s):
    if L==m:
        for i in range(m):
            print(arr[res[i]], end=' ')
        print()
    else:
        for i in range(s, n):
            res[L]=i
            DFS(L+1, i)
           

n, m=map(int, input().split())
arr=list(map(int, input().split()))
arr.sort()
res=[0]*(n+1)
cnt=0
DFS(0, 0)

0

drather

오.. 정말 대단하십니다. 알려주신 방법을 잘 응용하기만 한다면 정말 다양한 유형의 문제들을 풀 수 있군요!! 좋은 스킬 알려주셔서 감사합니다! 꼭 완벽히 제것으로 만들어서 좋은 결과를 내도록 하겠습니다!! 

기존에 윈도우 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

113

0

오류원인?

0

98

0

리스트 선언

0

106

1

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

0

109

1

알고리즘

0

69

1

코딩테스트

0

92

1

DFS 순서 질문드립니다.

0

124

2

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

0

91

1