티끌모아 태산

기타 알아두면 좋은 개념들 본문

CS 지식/자료구조,알고리즘

기타 알아두면 좋은 개념들

goldpig 2024. 1. 5. 12:49
728x90

순열 (permutation)

서로 다른 n 개 중 r 개를 골라 순서를 정해 나열하는 가짓수이며 순열이라는 의미의 영어 ‘Permutation’의 첫 글자 P를 따서 nPr로 표시합니다. 따라서 순열은 순서를 고려하기 때문에 [A, B, C]의 리스트에서 2개의 원소를 골라 순서를 정해 나열하면 [(A, B), (A, C), (B, A), (B, C), (C, A), (C, B)] 가 나오게 됩니다. 즉 순열에서는 (A, B)와 (B, A)는 다른 것입니다.

from itertools import permutations

arr = ['A', 'B', 'C']
nPr = permutations(arr, 2)
print(list(nPr))

[('A', 'B'), ('A', 'C'), ('B', 'A'), ('B', 'C'), ('C', 'A'), ('C', 'B')]

리스트로 출력하면 튜플형태로 반환하게 됩니다. 즉, 튜플 형태의 리스트를 반환합니다.

조합 (combination)

조합은 순서를 고려하지 않기 때문에 [A, B, C]의 리스트에서 2개의 원소를 골라 나열하면 [(A, B), (A, C), (B, C)] 가 나오게 된다. 조합은 (A, B)와 (B, A)는 같은 것으로 취급합니다.

from itertools import combinations

arr = ['A', 'B', 'C']
nPr = combinations(arr, 2)
print(list(nPr))

[('A', 'B'), ('A', 'C'), ('B', 'C')]

 

zip()

  • 동일한 개수로 이루어진 iterable한 객체들을 인수로 받아 묶어서 iterator로 반환합니다.
    z = zip([1, 2, 3], ('A', 'B', 'C'))
    print(z) # <zip object at 0x00000219ce6cc200>
    print(next(z)) # (1, 'A')
    print(next(z)) # (2, 'B')
    print(next(z)) # (3, 'C')

재귀함수

팩토리얼

피보나치 수열

728x90

'CS 지식 > 자료구조,알고리즘' 카테고리의 다른 글

알고리즘 분석 - 시간 복잡도  (1) 2023.12.22
Greedy[그리디]  (0) 2023.09.20
배열  (0) 2023.08.17