[백준 15649, Silver III] N과 M 시리즈

조재현·2023년 1월 9일
0

📒문제1 - 15649번, N과 M(1)


📢풀이

백트래킹과 재귀를 연습해보려고 푼 문제다. 역시나 아직 조금 어렵다...

import sys

def dfs():
  if len(s) == M:
    print(' '.join(map(str, s)))
    return

  for i in range(1, N+1):
    if i not in s:
      s.append(i)
      dfs()
      s.pop()

s = []
N, M = map(int, sys.stdin.readline().split())
dfs()

📒문제2 - 15650번, N과 M(2)


📢풀이

한번 푸니까 그래도 감이 생겼다. 계속 continue...

import sys

def dfs(start):
  if len(s) == M:
    print(' '.join(map(str, s)))
    return

  for i in range(start, N+1):
    if i not in s:
      s.append(i)
      dfs(i+1)
      s.pop()


s = []
N, M = map(int, sys.stdin.readline().split())
dfs(1)

📒문제3 - 15651번, N과 M(3)


📢풀이

import sys

def dfs():
  if len(s) == M:
    print(' '.join(map(str, s)))
    return

  for i in range(1, N+1):
    s.append(i)
    dfs()
    s.pop()

s = []
N, M = map(int, sys.stdin.readline().split())
dfs()

📒문제4 - 15651번, N과 M(4)


📢풀이

import sys

def dfs(start):
  if len(s) == M:
    print(' '.join(map(str, s)))
    return

  for i in range(start, N+1):
    if i not in s or i == start:
      s.append(i)
      dfs(i)
      s.pop()
  

s = []
N, M = map(int, sys.stdin.readline().split())
dfs(1)
profile
꿈이 많은 개발자 지망생

0개의 댓글