기타

코딩테스트를 위한 Python3 정리

김꿍디꿍디 2024. 10. 15. 15:20
반응형
문제를 풀면서 새롭게 알게 되거나, 자주 찾아보거나, 기억할 만한 내용 정리하기 (2024.10.15 ~ 추가중)

collections


Counter

from collections import Counter

 

개수를 세주는 Dictionary 형태의 클래스이다. 

 

Counter(배열)

Counter(["hi", "hey", "hi", "hi", "hello", "hey"])
>>> Counter({'hi': 3, 'hey': 2, 'hello': 1})

 

각 원소가 몇 번씩 나오는지가 저장된 객체를 반환한다. 

 

Counter(문자열)

Counter("hello world")
>>> Counter({'h': 1, 'e': 1, 'l': 3, 'o': 2, ' ': 1, 'w': 1, 'r': 1, 'd': 1})

 

문자가 문자열에서 몇 번씩 나타나는지를 알려주는 객체가 반환된다.

 

most_common() 

데이터의 개수가 많은 순으로 정렬된 배열을 리턴한다.

Counter('hello world').most_common()
>>> [('l', 3), ('o', 2), ('h', 1), ('e', 1), (' ', 1), ('w', 1), ('r', 1), ('d', 1)]

 

most_common(k) 

메서드의 인자로 숫자 k를 넘기면 그 숫자 만큼만 리턴하기 때문에, 가장 개수가 많은 K개의 데이터를 얻을 수 있다.

Counter('hello world').most_common(1)
>>> [('l', 3)]

 

산술 연산자 활용

Counter 객체간 덧셈, 뺄셈이 가능하다. 

 

counter1 = Counter(["A", "A", "B"])
counter2 = Counter(["A", "B", "B"])

counter1 + counter2
>>> Counter({'A': 3, 'B': 3})

counter1 - counter2
>>> Counter({'A': 1})
주의 : 뺄샘의 결과로 0이나 음수가 나온 경우에는 최종 카운터 객체에서 제외가 된다.

 


deque

double-ended queue 의 줄임말로, 앞과 뒤에서 즉, 양방향에서 데이터를 처리할 수 있는 queue형 자료구조이다. 

list와 유사하다.

from collections import deque

 

append(x)

list.append(x)와 마찬가지로 x를 deque의 오른쪽(마지막)에 추가(삽입)해준다.

deq = deque(['a', 'b', 'c'])
deq.append('d')
print(deq)

>>> deque(['a', 'b', 'c', 'd'])

 

appendleft(x)

appendleft(x)는 왼쪽 즉, 앞쪽에서 x를 추가(삽입)해주는 메소드이다.

deq = deque(['a', 'b', 'c'])
deq.appendleft('d')
print(deq)

>>> deque(['d', 'a', 'b', 'c'])

 

pop()

list.pop()과 같이 오른쪽(마지막)에서 부터 차례대로 제거와 반환(remove and return)을 하는 메소드이다.

deq = deque(['a', 'b', 'c'])
print('deque.pop() ->', end=' ')

while deq:
	print(deq.pop(), end=' ')
    
>>> c b a

 

popleft()

왼쪽(앞쪽)에서 부터 차례대로 제거와 반환(remove and return)을 하는 메소드이다.

deq = deque(['a', 'b', 'c'])
print('deque.popleft() ->', end=' ')

while deq:
	print(deq.pop(), end=' ')
    
>>> a b c

 

참고

https://choiiis.github.io/python/for-coding-test/

 

코딩테스트를 위한 Python 정리

코딩테스트 문제를 해결하면서 정리한 Cheat Sheet

choiiis.github.io

 

반응형