보글보글 개발일지
반응형

문제

https://www.acmicpc.net/problem/15664

 

15664번: N과 M (10)

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

www.acmicpc.net

풀이

변수 temp가 추가되었다.

temp를 통해 직전에 구한 수랑 같은지 비교해준다.

그리고 start번호를 통해 중복되는 수열을 여러 번 출력하면 안되는 조건을 만족시켜준다.

코드

import sys

read = sys.stdin.readline
n, m = list(map(int, read().split()))

num = list(map(int, read().split())) #입력받은 수 저장

arr = [0 for _ in range(m)]
vis = [0 for _ in range(n)]

num.sort()
def choose(k,start):
  if (k == m):
    print(" ".join(map(str, arr)))
  else:
    temp = 0
    for i in range(start,n):
      if(vis[i]==0 and temp != num[i]):
        vis[i] = 1
        arr[k] = num[i]
        temp = num[i]
        choose(k + 1,i)
        vis[i] = 0


choose(0,0)
반응형

'알고리즘' 카테고리의 다른 글

[백준/15666][파이썬] N과 M(12)  (0) 2023.04.11
[백준/15665][파이썬] N과 M(11)  (0) 2023.04.11
[백준/15663][파이썬] N과 M(9)  (0) 2023.04.11
[백준/15657][파이썬] N과 M(8)  (0) 2023.04.11
[백준/15656][파이썬] N과 M(7)  (0) 2023.04.11
profile

보글보글 개발일지

@보글

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!