728x90
반응형
문제:
자연수 N과 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오.
- 1부터 N까지 자연수 중에서 중복 없이 M개를 고른 수열
입력:
첫째 줄에 자연수 N과 M이 주어진다. (1<= M <= N < 8)
출력:
한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다.
수열은 사전 순으로 증가하는 순서로 출력해야 한다.
풀이 방법:
재귀적인 방법으로 길이가 M이 될 때까지 계속해서 넣어준다. 대신 이 문제에서는 중복을 허용하지 않았기 때문에 이에 대한 조건도 있어야 하고 증가하는 순서로 출력해야 하므로 배열에 들어있는 끝 값보다 클 때만 넣어줘야 한다는 조건 역시 필요하다. 이 문제에 대한 시리즈가 여러개 있는데 이에 맞는 조건을 넣어주면 된다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | def sequence(stack,numbers,M): if len(stack)==M: print(*stack) return else: for number in numbers: if not number in stack: stack.append(number) sequence(stack,numbers,M) stack.pop() a,b=map(int,input().split()) numbers=list(range(1,a+1)) stack=[] for number in numbers: if not number in stack: stack.append(number) sequence(stack,numbers,b) stack.pop() | cs |
문제 링크:
728x90
반응형
'Algorithm > Python' 카테고리의 다른 글
[BOJ]5430. AC (0) | 2019.08.04 |
---|---|
[BOJ]2312. 수 복원하기 (0) | 2019.08.03 |
[BOJ]1009. 분산처리 (0) | 2019.08.01 |
[Programmers]Lv 3.배달 (3) | 2019.07.31 |
[Programmers]Lv 3. 순위 (0) | 2019.07.30 |