오늘은 counter 함수를 설명하겠다. 관련된 문제로는 백준의 #11652 카드 문제가 있다.
11652번: 카드
준규는 숫자 카드 N장을 가지고 있다. 숫자 카드에는 정수가 하나 적혀있는데, 적혀있는 수는 -262보다 크거나 같고, 262보다 작거나 같다. 준규가 가지고 있는 카드가 주어졌을 때, 가장 많이 가지
www.acmicpc.net
우선 나는 맨처음에 그냥 딕셔너리를 내가 만들어서 숫자의 개수를 세줬는데 이 기능을 그대로 해주는 함수가 있었다. collections 모듈의 counter 함수이다. 당연히 코드 맨윗줄에 모듈을 먼저 불러와야 하므로 import를 을 해줘야 한다
from collections import counter
위에서도 설명했지만 그냥 아래의 기능을 한 줄로 가능하게 하는 것이다.
def counts(word):
board = {}
for letter in word:
if letter not in board:
board[letter] = 1
else:
board[letter] += 1
return board
print(counts("Hello World"))
from collections import Counter
Counter('hello world')
또한 카드 문제에서 요구하는 데이터의 개수가 많은 걸로 정렬하는 메서드도 collections 모듈안에 있는데most_common()이라는 메서드다. 또한 ()안에 인자를 넣어주면 그 갯수만큼 가장 많은걸 반환한다.
from collections import Counter
Counter('hello world').most_common()
이처럼 카드문제를 그냥 풀어서 쓸 수도 있지만 이 모듈을 이용하면 간단하게 풀 수 있다.
728x90
'코딩테스트 > 파이썬 알고리즘' 카테고리의 다른 글
| Study-[Python_모듈/함수/패키지/메소드] (0) | 2021.12.07 |
|---|---|
| Algorithms-[Euclidean algorithm & The Sieve of Eratosthenes ] (0) | 2021.12.01 |
| Function-[sys.stdin.readline()] (0) | 2021.11.27 |
| Algorithms-[DFS] (0) | 2021.11.26 |
| Algorithms-[Greedy] (백준 #11047 [동전0]) (0) | 2021.11.21 |