알고리즘/백준

15664번 N과M(10) 백준

글을 쓰는 개발자 2020. 12. 6. 19:41
반응형

문제:www.acmicpc.net/problem/15664

 

15664번: N과 M (10)

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

www.acmicpc.net

 

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
31
32
33
34
35
import sys
N,M = map(int,sys.stdin.readline().split())
li=[int(i) for i in sys.stdin.readline().split()]
check=[0]*10001
passing=[0]*10001
init=[False]*10001
for i in li:
    check[i]+=1
dic = set(li)
li=list(dic)
li.sort()
ans=[]
 
def func(celi):
    if celi==M:
        print(' '.join(ans))
        return
    for i in range(len(li)):
        if not ans:
            if init[li[i]]!=True:
                init[li[i]]=True
                passing[li[i]]=1
                ans.append(str(li[i]))
                func(celi+1)
                passing[li[i]]=0
                ans.pop()
        else:
            if passing[li[i]]<check[li[i]] and int(ans[-1])<=li[i]:
                passing[li[i]]+=1
                ans.append(str(li[i]))
                func(celi+1)
                passing[li[i]]-=1
                ans.pop()
 
func(0)
cs

이 문제는 N과M(9)에서 28번째 줄을 추가했다. (대소관계만 추가!)

 

다른 분들은 어떻게 풀었나 보니 라이브러리로 푸는 분이 있어서 올린다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
from itertools import combinations
 
N, M = map(int, input().split())
N_list = list(map(int, input().split()))
N_list = sorted(N_list) #순서대로 나오게 정렬 먼저
output = [] #중복 제거하기 위한 리스트 생성
 
for numbers in list(combinations(N_list, M)):
    if not output:
        output.append(numbers)
    elif numbers not in output: # 중복 제거
        output.append(numbers)
            
for numbers in output:
    for num in numbers:
        print(num, end=' ')
    print()
cs

참고:https://claude-u.tistory.com/308

 

#257 백준 파이썬 [15664] N과 M (10) - 조합

https://www.acmicpc.net/problem/15664 Python Code from itertools import combinations N, M = map(int, input().split()) N_list = list(map(int, input().split())) N_list = sorted(N_list) #순서대로 나오..

claude-u.tistory.com

combinations라는 라이브러리를 이용하여 해결하였다.

반응형