반응형
snowman95
코딩수련장
snowman95
전체 방문자
오늘
어제
  • 분류 전체보기 (229)
    • 앱테크 (3)
    • 옵시디언 (5)
    • 드라마, 영화 (1)
    • 개발자 이야기 (23)
    • 프로젝트 (10)
      • 프로젝트 방법론 (7)
      • 프로젝트 기록 (2)
      • Github (1)
    • 개발 지식 (0)
      • 디자인 패턴 (0)
    • 프론트엔드 개발 (5)
      • 테크트리 (2)
      • React.js (19)
      • ReactNative (2)
      • Next.js (6)
      • GraphQL (6)
      • 패키지 매니저 (2)
      • 라이브러리 (3)
      • 상태관리 라이브러리 (4)
      • Web 지식 (3)
      • HTML CSS (26)
      • Javascript (16)
      • 도구 (Tool) (3)
      • 성능 최적화 (1)
      • 디자인시스템 (0)
    • Python (53)
      • 모음집 (1)
      • 문법 (12)
      • 라이브러리 (15)
      • 알고리즘 (10)
      • 백준 문제풀이 (9)
      • 코딩테스트 (2)
      • 도구 (Tool) (3)
    • C++ (20)
      • 알고리즘 (6)
      • 삼성SW기출 (6)
      • 삼성 A형 (6)
    • 데이터사이언스 (1)
    • 인프라 (9)
      • 하드웨어 지식 (4)
      • Ansible (2)
      • Database (2)
      • 쉘스크립트 (1)
    • 주식 (0)
    • 취업 준비 (4)
      • 취업 이야기 (0)

블로그 메뉴

  • 홈
  • 태그

공지사항

인기 글

태그

  • 전공 요약 #운영체제
  • A형
  • 오블완
  • nextjs
  • 백준
  • C++
  • 티스토리챌린지
  • 전공요약
  • 나의 해방일지
  • 알고리즘
  • GraphQL
  • 전공 요약 #데이터베이스
  • 공간복잡도
  • 삼성SDS
  • 삼성SW역량테스트
  • 기계식키보드 #nuphy
  • 언어
  • 전공 요약 #네트워크
  • Next.js #graphql #tailwind.css
  • 면접

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
snowman95

코딩수련장

파이썬(python) 라이브러리 - collections.Counter
Python/라이브러리

파이썬(python) 라이브러리 - collections.Counter

2021. 4. 21. 14:50
728x90
반응형

collections.Counter(iterbale)


iterbale 객체의 각 요소의 등장 횟수를 세는 기능

리스트에 음수가 있으면 안됨 !!!!!!!!!!!!!!!

import collections
a = [1,2,3,1,2,3,3,4]

b = collections.Counter(a) : 등장 횟수 많은것 부터 dict{값:등장횟수} 로 돌려줌
Counter({3: 3, 1: 2, 2: 2, 4: 1})

c = b.most_common()        : 리스트[튜플()]로 변환하여 반환
[(3, 3), (1, 2), (2, 2), (4, 1)]

d = b.elements()           : 카운터된 개수만큼 요소 반환
list(d)
[1, 1, 2, 2, 3, 3, 3, 4]

list(b)
[1, 2, 3, 4]

 

그럼 음수값이 포함된 리스트에서 등장 횟수를 어떻게 구할까?

아주 큰 수를 더하여 음수를 양수로 바꿔서 풀면 됩니다.
ex) 입력되는 정수의 절댓값은 4,000을 넘지 않는다. 
    = 모든 값에 4000을 더하면 반드시 0보다 커짐

 

2108번: 통계학

첫째 줄에 수의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 단, N은 홀수이다. 그 다음 N개의 줄에는 정수들이 주어진다. 입력되는 정수의 절댓값은 4,000을 넘지 않는다.

www.acmicpc.net

input : [-1,-1,-2,-2]
→ input에 4000씩 모두 더하고 시작

array = [3999, 3999, 3998, 3998]
print(collections.Counter(array).most_common()[0][0]-4000)
→ -1

import numpy np (백준에서는 지원 안됩니다)
print(np.bincount(array).argmax()-4000)
→ -2

Q. numpy의 경우에는 왜 이런 결과가 나올까?
bincount()는 0부터 가장큰 값 까지 등장횟수 순서대로 나열
argmax() 함수는 array에서 가장 큰 값 들고오는데 여러개 있으면 가장 처음 만나는 것 들고옴 
그래서 3999이 아니라 3998 값을 가져옴.
3998-4000 = -2

 

반복문을 사용하지 않고 각 요소를 원하는 개수만큼 리스트로 생성

import collections
mycounter = collections.Counter (a = 1, b = 2, c = 3) 
print(list(mycounter.elements()))

['a', 'b', 'b', 'c', 'c', 'c']
import collections
map_arr = {'a':1, 'b':2, 'c':3}
mycounter = collections.Counter (map_arr) 
print(list(mycounter.elements()))

['a', 'b', 'b', 'c', 'c', 'c']

 

 

문자열에 a~z가 각각 몇 개 등장하는지 카운트

 

10808번: 알파벳 개수

단어에 포함되어 있는 a의 개수, b의 개수, …, z의 개수를 공백으로 구분해서 출력한다.

www.acmicpc.net

import sys,collections,string
s = sys.stdin.readline().rstrip()
arr = {}
for i in string.ascii_lowercase:
    arr[i] = 0
for key,value in dict(collections.Counter(s)).items():
    arr[key] = value
for i in string.ascii_lowercase:
    sys.stdout.write(str(arr[i]) + ' ')
반응형
저작자표시 동일조건 (새창열림)

'Python > 라이브러리' 카테고리의 다른 글

파이썬(python) 라이브러리 - collections.deque  (0) 2021.04.22
파이썬(python) 라이브러리 - bisect (이진탐색, 바이너리 서치, Binary Search)  (0) 2021.04.21
파이썬(python) 유용한 표준 라이브러리  (0) 2021.04.21
파이썬(python) 라이브러리 - itertools (순열, 조합, 누적합)  (0) 2021.04.21
파이썬 라이브러리 - datetime  (0) 2021.03.23
    'Python/라이브러리' 카테고리의 다른 글
    • 파이썬(python) 라이브러리 - collections.deque
    • 파이썬(python) 라이브러리 - bisect (이진탐색, 바이너리 서치, Binary Search)
    • 파이썬(python) 유용한 표준 라이브러리
    • 파이썬(python) 라이브러리 - itertools (순열, 조합, 누적합)
    snowman95
    snowman95
    (17~19) Unity/Unreal Engine 게임 프로그래머 (20~21) System Administrator ___________ (22~) React 웹 프론트앤드 개발자 __________ 깃헙 : https://github.com/snowman95

    티스토리툴바