파이썬 알고리즘 필요 라이브러리

    Colletions의 Defaultdict 라이브러리

    Collection에는 Defaultdict 라이브러리가 있다.  Defaultdict 라이브러리는 딕셔너리를 선언했을 때, 기본적으로 가지게 될 값을 지정해주는 라이브러리다. 예를 들어, 아래의 값은 무조건 에러가 발생한다. 이유는 A[char]에 대한 초기값이 설정이 되지 않았기 때문이다.

    A = {]
    for char in 'abcdefghijklmnopqrstuvwxyz' : 
    	A[char] +=1

    위의 경우를 최소화 해주기 위해 Defaultdict 라이브러리가 존재한다.  아래의 예시는 a라는 딕셔너리에 기본 자료형이 int인 값을 넣어준다. 

    from collections import defaultdict
    
    a = defaultdict(int)
    for char in 'abcdefghijklmnopqrstuvwxyz' :
    	a[char] +=1

    이 뿐만 아니라 Lambda 식을 활용해 원하는 값을 초기값으로 넣어주는 방법도 있다. 아래의 코드를 실행하면, a 딕셔너리의 기본값은 정수형 1로 셋팅이 되어있다. 

    from collections import defaultdict
    
    a = defaultdict(lambda : 1)
    for char in 'abcdefghijklmnopqrstuvwxyz' :
    	a[char] +=1

     

    Collections의 Counter 함수

    Counter 함수는 해당 자료에 동일한 문자열이 몇개나 있는지 확인한 후, 그 값을 딕셔너리로 반환해주는 함수다. 예를 들어 [ 'a', 'a', 'b', 'b']를 Counter 함수로 사용할 경우, a와 b의 갯수를 샌 후에 딕셔너리 형태로 돌려준다. 딕셔너리 형태로 돌려주면 원하는 방식에 따라 keys(), value(), items()등을 활용해 자료를 작성해 나갈 수 있다.

    from collections import Counter
    
    a = ['a','b','c','c','d','bc']
    char_list = Counter(a)
    
    >>>
    Counter({'c': 2, 'a': 1, 'b': 1, 'd': 1, 'bc': 1})

     

    Itertools의 Combination, Permutations

    Itertools에는 순열,조합함수가 있다. 그동안은 가내 수공업으로 짜왔는데, 가내수공업으로 짤 경우 생각보다 오랜 시간이 걸리기 때문에 코딩 테스트에는 가능하면 Combination, Permutations을 사용해서 구현해주면 좋을 것 같다. Combination은 조합이기 때문에 순서를 고려하지 않은 값을 나열해주며, Permutations는 순서까지 고려한 값을 나열해준다. 결과의 차이는 아래와 같다. 

    import itertools
    
    
    a = ['a', 'b', 'c', 'd', 'e']
    
    b = list(itertools.combinations(a))
    c = list(itertools.combinations(a))
    
    
    print(b)
    >>>>
    [('a', 'b'), ('a', 'c'), ('a', 'd'), ('a', 'e'), ('b', 'c'), ('b', 'd'), ('b', 'e'), ('c', 'd'), ('c', 'e'), ('d', 'e')]
    
    print(c)
    >>>>
    [('a', 'b'), ('a', 'c'), ('a', 'd'), ('a', 'e'), ('b', 'a'), ('b', 'c'), ('b', 'd'), ('b', 'e'), ('c', 'a'), ('c', 'b'), ('c', 'd'), ('c', 'e'), ('d', 'a'), ('d', 'b'), ('d', 'c'), ('d', 'e'), ('e', 'a'), ('e', 'b'), ('e', 'c'), ('e', 'd')]

    combinations 및 permutations 함수를 쓸 때는 itertools.combinations(리스트, 원하는 조합의 길이)로 사용한다. 

     

     

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

    누적합 계산하기  (0) 2021.10.04
    그리디 알고리즘  (0) 2021.09.27
    파이썬, Lower Bound 및 Upper Bound 구현  (0) 2021.08.22
    파이썬 리스트 정렬  (0) 2021.08.15
    다익스트라, 플로이드-와샬 알고리즘  (0) 2021.08.03

    댓글

    Designed by JB FACTORY