티스토리 뷰

문제 링크

 

15649번: N과 M (1)

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

www.acmicpc.net

문제 풀이

n, m = map(int, input().split())

case = []
def recursive():
  if len(case) == m:
    print(' '.join(map(str, case)))
    return

  for i in range(1, n + 1):
    if i in case:
      continue
    case.append(i)
    recursive()
    case.pop()

recursive()

15649 N과 M (1) 입출력 예시

*key point: 재귀함수를 이용하여 문제를 푼다. 1 ~ n까지의 반복되는 for문 안에서의 i부터 시작하여 중복되지 않는 수로 다음 수가 정해지고, 전체 길이가 m을 만족하면 해당 case print 된다. 하나의 case가 출력되면 pop되어 사라지고 다시 반복문의 다음 스텝이 시작된다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함