NHN_백준_15649 (N과 M (1, 2) itertools_permutations_combinations)

RostoryT·2022년 5월 28일
0

Corporation_Coding Test

목록 보기
1/19

주의할 사항

  • itertools 다!! collections가 아니고!

  • 콤비네이션, 퍼뮤테이션 -> iter가 가능한 리스트에 대해 쓰기 때문에 itertools

  • 콤비네이션은 중복 제거

  • 퍼뮤테이션은 중복 X 전부 모두

* 두 가지가 가능하다!
permutation([리스트], 정수)         ----> 한줄 코딩을 위해 str() 저장된 리스트로 주로 사용
permutation(range(1, n), 정수)
  • 사용법 알아내는 방법은 help(함수명) <-> dir() 주의

itertools permutations 사용법



  • permutation(range(1, n), 정수) 인 경우 (O(n^2))
from itertools import permutations

n, m = map(int, input().split())

arr = list(map(list, permutations(range(1, n+1),m)))

leng = len(arr)

for i in range(leng):
    for j in range(m):
        print(arr[i][j], end=' ')
    print()
  • permutation([리스트], 정수) 인 경우 (O(n))
''' 백준 15649 - 옛날에 용감한 python보면서 내가 푼 '''
from itertools import permutations

n, m = map(int, input().split())

# 리스트를 따로 만들지 않고 한줄에 해줬으며, (중요) 이때 각 원소를 str()로 변환해줘야 함
result = list(permutations([str(i) for i in range(1, n+1)], m)) 

for i in result:
    print(" ".join(i))

#                첫 번째 인자 = 리스트, 두 번째 인자 = nCm일 경우, m



itertools combinations 사용법

from itertools import combinations

n, m = map(int, input().split())

arr = list(combinations([str(i) for i in range(1, n+1)], m))

for a in arr:
    print(" ".join(a))

''' 블로그 정답 '''
from itertools import combinations  
 
N, M = map(int, input().split())  
arr = [str(i+1) for i in range(N)]   # 각 원소 str()로 만들어줘야함
 
for e in list(combinations(arr, M)):  
    print(" ".join(e))
profile
Do My Best

0개의 댓글