아이엠 !나이롱맨😎
article thumbnail
반응형

 

 

파이썬에는 정말 유용한 함수가 많습니다. 그 중 Counter 는 제가 생각하기에 가장 유용한 함수 중에 하나라고 생각합니다. 

이번 글에서는 Collections 모듈 중 하나인 Counter 함수에 대해서 알아보고 2019 카카오 겨울 인턴쉽 튜플 에 바로 적용해보겠습니다.

 

그럼 렛츠두더코드!

 

Collections 의 Counter()


Counter 는 리스트나 문자열의 갯수를 dict 타입으로 반환해주는 함수입니다. 

말로 백번 설명하는 것보다 한번의 예제가 보는 것이 더 좋겠죠?

 

Counter(["I", "am", "Iron", "man", "!", "!"])
# Counter({'!': 2, 'I': 1, 'am': 1, 'Iron': 1, 'man': 1})

Counter(["I", "am", "Iron", "man", "!", "!"])["!"]
# 2

Counter("I am Iron man !!")
# Counter({' ': 4, 'I': 2, 'a': 2, 'm': 2, 'n': 2, '!': 2, 'r': 1, 'o': 1})

 

most_common() 을 이용해서 가장 갯수가 많은 것들을 내림차순으로 받을 수도 있습니다.

Counter("I am Iron man !!").most_common(1)
# [(' ', 4)]

Counter("I am Iron man !!").most_common(3)
# [(' ', 4), ('I', 2), ('a', 2)]

 

이게 다입니다. 아주 쉽죠? 그럼 문제에 적용해보죠.

 

문제풀이


문제는 2019 카카오 겨울 인턴쉽 튜플 입니다.

문제에 대한 설명은 생략합니다.

 

from collections import Counter
import re

def solution(s):
    nums = re.findall("\d+", s)
    return [int(x[0]) for x in sorted(Counter(nums).items(), key=lambda x: x[1], reverse=True)]

re 모듈을 이용해서 숫자들만 추출한 후, Counter 함수를 통해 각 문자에 대한 갯수를 dict 타입으로 받습니다.

이후 sorted 함수를 이용해서 정렬해줍니다.

 

Counter 함수를 이용하면 문자열이 주어졌을 때 하나하나 for 문 돌려서 갯수를 셀 필요가 없을 것 같습니다. 한줄로 아주 간단하게 문자열 갯수를 셀 수 있죠.

 

그럼 오늘은 여기까지!

반응형

article prev thumbnail
profile on loading

Loading...