본문 바로가기
알고리즘/BOJ

[BOJ] 15652번 N과 M (4) / 사용언어 : 파이썬(python)

by 바른 호랑이 2021. 12. 16.
728x90
반응형

※ 문제링크 

 

15652번: N과 M (4)

한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해

www.acmicpc.net

※ 기본문제 

 

[BOJ] 15649번 N과M(1) / 사용언어 : 파이썬(python)

※ 문제링크 : https://www.acmicpc.net/problem/15649 15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서

data-is-power.tistory.com

※ 문제풀이

N, M = map(int, input().split())
number_list = [x for x in range(1, N+1)] # 1부터 N까지의 숫자로 이루어진 리스트 생성
arr_list = []
start = 0
def dfs(start):
    if len(arr_list) == M:
        print(*arr_list)
        return

    for i in range(start, N):
        arr_list.append(i+1)
        dfs(i)
        arr_list.pop()
dfs(0)

 

해당문제는 BOJ 15650번에서 조금만 변형된 형태로 자기자신또한 포함하여 순열을 작성하고, 순서는 고려하지 않는 것이 핵심인 문제였다. 기존 문제들과 크게 다를 것이 없어서 BOJ 15650번과 15651번 코드를 조금만 변형하여 작성하였다. 해당문제에 적용한 내용들은 이전 문제들에서 썼던 것처럼 시작번호를 지정하고, DFS를 사용하여 코드를 작성하였다.

 

P.S 개발자가 되기위해 공부중입니다. 잘못된 부분을 댓글로 남겨주시면 학습하는데 큰 도움이 될 거 같습니다.

728x90
반응형

댓글