본문 바로가기
(Python)파이썬/(Python)파이썬 문법

파이썬 - 리스트 원소 개수 구하기/collections모듈의 Counter클래스 활용 예제

by 공부가싫다가도좋아 2021. 6. 2.
반응형

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

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

 


도움 되셨다면 하트 꾹 눌러주세요~ :)

반응형

댓글