반응형
collections모듈의 Counter클래스
Counter클래스 활용
from collections import Counter
arr=[1,2,3,3,6,2,1,4,4,4,5,5,5]
cnt = Counter(arr)
print("Counter(arr) =",cnt)
#Counter(arr) = Counter({4: 3, 5: 3, 1: 2, 2: 2, 3: 2, 6: 1})
cnt = Counter(arr).most_common()
print("Counter(arr).most_common() =",cnt)
#Counter(arr).most_common() = [(4, 3), (5, 3), (1, 2), (2, 2), (3, 2), (6, 1)]
#Counter(리스트).most_common()은 리스트안의 튜플 형태로 값을 반환
print("len(cnt) =",len(cnt))
#len(cnt) = 6
예제 1)
첫 째줄에 수의 개수 N(N>=1)이 주어지며, 그 다음 N개의 줄에는 정수가 주어진다. N개의 수들의 최빈값을 구하는 프로그램을
작성해라.
(여러개 있을때는 그 중 제일 작은 수만 출력)
예시 1)
입력 | 출력 |
8 9 2 -1 8 -1 2 4 5 |
-1 |
예시 2)
입력 | 출력 |
10 5 6 2 5 -5 2 2 5 5 6 |
5 |
풀이 코드
from collections import Counter
N = int(input())
arr = []
for i in range (N):
arr.append(int(input()))
arr.sort()
cnt = Counter(arr).most_common()
print(cnt[0][0])
print(cnt)
예제 2)
첫 째줄에 수의 개수 N(N>=1)이 주어지며, 그 다음 N개의 줄에는 정수가 주어진다. N개의 수들의 최빈값을 구하는 프로그램을
작성해라.
(여러개 있을때는 그 중 제일 큰 수만 출력)
예시 1)
입력 | 출력 |
7 3 4 3 2 -1 2 4 |
4 |
예시 2)
입력 | 출력 |
6 3 2 5 3 1 2 |
3 |
풀이 코드
from collections import Counter
N = int(input())
arr = []
for i in range (N):
arr.append(int(input()))
arr.sort()
arr.reverse()
cnt = Counter(arr).most_common()
print(cnt[0][0])
print(cnt)
예제 3)
첫 째줄에 수의 개수 N(N>=1)이 주어지며, 그 다음 N개의 줄에는 정수가 주어진다. N개의 수들의 최빈값을 구하는 프로그램을
작성해라.
(여러개 있을때는 모두 출력)
예시 1)
입력 | 출력 |
10 9 8 3 -1 9 -5 22 4 -5 0 |
9 -5 |
예시 2)
입력 | 출력 |
5 0 -3 2 1 5 |
0 -3 2 1 5 |
풀이 코드
from collections import Counter
N = int(input())
arr = []
for i in range (N):
arr.append(int(input()))
cnt = Counter(arr).most_common()
for i in range (len(cnt)):
if(cnt[0][1]==cnt[i][1]):
print(cnt[i][0])
else:
break #똑같지 않다면 이 후 부터는 for문을 돌릴 필요 없음.
예제4)
첫 째줄에 수의 개수 N(N>=1)이 주어지며, 그 다음 N개의 줄에는 정수가 주어진다. N개의 수들 중 똑같은 수 가 3개
이상 되는 숫자를 출력하는 프로그램을 작성해라.
(3개 이상 되는 숫자가 없을 시 -1 출력)
예시 1)
입력 | 출력 |
10 2 2 3 3 7 7 8 8 1 1 |
-1 |
예시 2)
입력 | 출력 |
20 1 5 2 4 9 2 1 8 4 5 3 7 2 -1 2 4 6 0 -7 23 |
2 4 |
풀이 코드
from collections import Counter
N = int(input())
arr = []
for i in range (N):
arr.append(int(input()))
cnt = Counter(arr).most_common()
print(cnt)
for i in range (len(cnt)):
if (cnt[0][1]<3):
print(-1)
break
else:
if (cnt[i][1]>=3):
print(cnt[i][0])
else:
break
도움 되셨다면 하트 꾹 눌러주세요~ :)
반응형
'(Python)파이썬 > (Python)파이썬 문법' 카테고리의 다른 글
(파이썬) 리스트 요소 조합하기/ permutations & combinations (0) | 2021.06.18 |
---|---|
(파이썬) 파이썬 소문자 알파벳만 나열/ 대문자 알파벳만 나열 (0) | 2021.06.17 |
파이썬 - 리스트 중복 제거하기(다양한 방법) + 예제 (0) | 2021.06.09 |
파이썬 - 리스트 정렬, for문 을 사용한 예제/백준2750번 (0) | 2021.05.26 |
(Python)파이썬: 최대값,최소값 구하기 - list 리스트 활용(Max(),min())/삼항연산자 활용/and,or 삼항연산자 활용 (0) | 2021.02.27 |
댓글