보글보글 개발일지
반응형

문제

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

 

15666번: N과 M (12)

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

www.acmicpc.net

풀이

중복되는 수열을 여러 번 출력하면 안되며, 같은 수를 여러 번 골라도 된다.

따라서 start를 사용하고 vis를 빼준다.

코드

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)]

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



choose(0,0)

n과 m 시리즈 후기

이로써 n과 m 시리즈 끝! 사실 다 풀어야하나? 싶은게 그냥 n과 m하나에서 계속 조금씩 업그레이드 되는거라 n과 m(1)~(5) 정도만 풀어도 기본 백트래킹을 익히는데는 아무런 문제가 없을 것 같다.

그래도 다 푸는 재미가 있어서 그냥 풀어버렸다....

반응형
profile

보글보글 개발일지

@보글

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