CS/Algorithm 문제

[BaekJoon] 백준 15651번 N과 M(3)

[BaekJoon] 백준 15651번 N과 M(3)

 

문제: www.acmicpc.net/problem/15651

 

내코드

 

  • 이전 문제들과 비슷
  • 단지 오름차순이여야 한다는 조건이 없고, 중복이 가능하기 때문에 해당 코드를 제거해 주면 된다.

 

# BaekJoon 15651.py N과 M(3)
# 백트래킹 문제: 주어진 문제의 답을 구하기 위해 현재 상태에서 가능한 모든 후보군을 따라 들어가며 탐색하는 알고리즘

n, m = map(int, input().split())
out = []  # 출력 내용


def solve(depth, N, M):
    if depth == M:  # 길이가 m인 리스트가 완성되었다면
        print(' '.join(map(str, out)))  # 출력
        return
    for i in range(n): # 1-n까지 수를 돌아가며
        out.append(i+1)  # 사용한 것 리스트에 기록
        solve(depth+1, N, M)  # 리스트의 다음 수 정하러 들어감
        out.pop()  # k번째 수를 i로 정한 경우를 모두 확인했으므로 k번째 수를 pop하기(다음 수를 k번째에 집어넣기 위해)


solve(0, n, m)

 

참고

728x90
반응형