Skip to content

BOJ 백준 15666: N과 M (12)

Updated: at 오후 08:28

Table of contents

Open Table of contents

들어가며

이 문제는 전형적인 N과 M 시리즈 문제입니다.
문제의 조건을 잘 읽고, DFS와 Backtracking으로 구현하면 돼요…

AC 받은 Python 코드

import sys

input = sys.stdin.readline


def dfs(cur_len, cur_idx):
    # base condition 1
    if cur_len == M:
        setSeqs.add(tuple(seq))
        return

    for i in range(cur_idx, lenNums):
        seq.append(nums[i])
        dfs(cur_len + 1, i)
        seq.pop()


if __name__ == "__main__":
    N, M = map(int, input().rstrip().split())
    nums = [*sorted(map(int, input().rstrip().split()))]
    seq = []
    lenNums = len(nums)
    setSeqs = set()
    # print(nums)
    for i in range(lenNums):
        seq.append(nums[i])
        dfs(1, i)
        seq.pop()

    for s in sorted(setSeqs):
        print(" ".join(map(str, s)))