freeParksey
밥세공기
freeParksey
전체 방문자
오늘
어제
  • 분류 전체보기 (150)
    • JAVA (32)
      • 자바스터디 (21)
      • Java in action (6)
      • OOP (1)
      • test (2)
    • 알고리즘 문제 (51)
      • 백준 (49)
    • C (Atmega128) (7)
    • 인공지능 (11)
    • 운영체제 (8)
    • 디자인패턴 (5)
    • 잡다한것 (2)
    • 사용기 (3)
      • 도커 (3)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • java
  • 그리드
  • 자바
  • 백트래킹
  • 딥러닝
  • Iterator
  • 운영체제
  • 백트랙킹
  • dto 변환 위치
  • 자바스터디
  • 우아한테크코스
  • 동작 파라미터화
  • 후기
  • 3주차
  • 우테코
  • 집합과 맵
  • 스트림
  • Thread #JVM #자바스터디 #
  • dto 변환
  • 상속
  • Thread 동작
  • 프리코스
  • Collection
  • 동적계획법
  • 재귀기초
  • 알고리즘
  • 분류
  • Python
  • generic
  • 백준

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
freeParksey

밥세공기

알고리즘 문제/백준

알고리즘 - 백트랙킹 (15650 N과 M(2))

2022. 8. 8. 04:16

문제

자연수 N과 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오.

  • 1부터 N까지 자연수 중에서 중복 없이 M개를 고른 수열
  • 고른 수열은 오름차순이어야 한다.

입력

첫째 줄에 자연수 N과 M이 주어진다. (1 ≤ M ≤ N ≤ 8)

출력

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

수열은 사전 순으로 증가하는 순서로 출력해야 한다.

예제 입력 1 복사

3 1

예제 출력 1 복사

1
2
3

예제 입력 2 복사

4 2

예제 출력 2 복사

1 2
1 3
1 4
2 3
2 4
3 4

예제 입력 3 복사

4 4

예제 출력 3 복사

1 2 3 4

문제 요약

이전과 같이 여러 개를 선택하는데 같은 숫자가 있으면 안되고 순차로 되어있다.

 

 

접근 방법

저번 포스트에서와 같이 똑같이 재귀를 사용하여 풀었고 다만 해당 index를 같이 주어서 현재 위치보다 크게 잡는다.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
N, M = map(int, input().split())
stack = list()
isDone = [False for i in range(8)]
def combin(index,count):
    global stack
    if count == M:
        print(' '.join(stack))
        return
        
    for i in range(index,N):
        stack.append(str(i+1))
        if not isDone[i]:
            isDone[i] = True   
            combin(i, count+1)
            isDone[i] = False
        stack.pop()
 
combin(0,0)
 
 

 

'알고리즘 문제 > 백준' 카테고리의 다른 글

알고리즘 - 백트래킹 (15652 N과 M(4))  (0) 2022.08.08
알고리즘 - 백트래킹 (15651 N과 M(3))  (0) 2022.08.08
알고리즘 - 백트리킹 (15469 - N과 M(1))  (0) 2022.08.08
알고리즘 - 집합과 맵(11478 서로 다른 부분 문자열의 개수)  (0) 2022.08.06
알고리즘 - 집합과 맵(1269 대칭 차집합)  (0) 2022.08.06
    '알고리즘 문제/백준' 카테고리의 다른 글
    • 알고리즘 - 백트래킹 (15652 N과 M(4))
    • 알고리즘 - 백트래킹 (15651 N과 M(3))
    • 알고리즘 - 백트리킹 (15469 - N과 M(1))
    • 알고리즘 - 집합과 맵(11478 서로 다른 부분 문자열의 개수)
    freeParksey
    freeParksey
    Github: https://github.com/parksey

    티스토리툴바