새소식

반응형
코딩 테스트

[백준] 15656 N과 M (7)

  • -
728x90
반응형

문제

  • N개의 자연수와 자연수 M이 주어졌을 때, 조건을 만족하는 길이가 M인 수열 모두 구하기
    • 1 <= M <= N <= 7
  • N개의 자연수 중에서 중복을 허용해 M개 고르기
  • 조건을 만족하는 수열을 오름차순으로 한 줄에 하나씩 출력하기

 

풀이 1

  • 파이썬 라이브러리를 이용한 풀이
  • product 이용해 가능한 모든 수열 찾기
from itertools import product

N, M = map(int, input().split())
numbers = list(map(int, input().split()))
numbers.sort()

for comb in product(numbers, repeat=M):
    print(*comb)

 

풀이 2

  • 재귀 이용한 풀이
N, M = map(int, input().split())
numbers = list(map(int, input().split()))
numbers.sort()
combs = []	# 수열 저장 변수

def solve(depth, N, M):
	# 모든 숫자를 뽑은 경우
    if depth == M : 
        print(*combs)
        return
    # 숫자 하나씩 돌아가면서 선택하기
    for i in range(N):
        combs.append(numbers[i])
        solve(depth+1, N, M)
        combs.pop()

solve(0, N, M)

 

References

  • 백준 15656
  • 2023.05.02 오늘의 문제
반응형

'코딩 테스트' 카테고리의 다른 글

[백준] 15655 N과 M (6)  (0) 2023.05.02
[백준] 17406 배열 돌리기 4  (0) 2023.05.02
[백준] 1449 수리공 항승  (0) 2023.05.02
[백준] 17836 공주님을 구해라!  (0) 2023.05.01
[백준] 1166 선물  (0) 2023.05.01
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.