[python]백준 15650:N과 M(2)

죽부인·2022년 12월 27일
0

📌난이도🥈3

📌코드

from collections import deque
N, M = map(int, input().split())

stack = deque()


def tracking(startn):
    if len(stack) == M:
        for i in stack:
            print(i, end=' ')
        print()

    for i in range(startn+1, N+1):
        stack.append(i)
        tracking(i)
        stack.pop()


for i in range(1, N+1):
    stack.append(i)
    tracking(i)
    stack.pop()

📌후기

15649번 이랑 너무 비슷해서 어렵지 않았다.
시작 지점을 밖으로 뻇는데 안으로 넣는 것이 더 나은 것 같다.

from collections import deque
N, M = map(int, input().split())

stack = deque()


def tracking(startn):
    if len(stack) == M:
        print(' '.join(map(str, stack)))
        return

    for i in range(startn, N+1):
        if i not in stack:
            stack.append(i)
            tracking(i+1)
            stack.pop()

tracking(1)

조합으로된 풀이도 있었다.
파이썬 itertools.combinations( [리스트] , M ) 은 내부에 튜플형태로 되어있었다.

import itertools

N, M = map(int, input().split())
arr = list(itertools.combinations([i for i in range(1, N+1)], M))
print(arr)
for i in arr:
    answer = ""
    for j in i:
        answer += str(j)
        answer += " "
    print(answer)
profile
연습장

0개의 댓글