강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của drather1591
drather1591

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

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ã)

10. Tìm tổ hợp (DFS)

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

Đã giải quyết

Viết

·

271

0

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

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

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

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

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

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

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

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

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

python코테 준비 같이 해요!

Câu trả lời 2

1

codingcamp님의 프로필 이미지
codingcamp
Người chia sẻ kiến thức

제공한 조합 코드에서 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님의 프로필 이미지
drather
Người đặt câu hỏi

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

Hình ảnh hồ sơ của drather1591
drather1591

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

Đặt câu hỏi