본문 바로가기
I can do it on my own!/백준

[백준]10807번 파이썬(Python)

by zivvon 2023. 5. 10.
목차 접기

문제

총 N개의 정수가 주어졌을 때, 정수 v가 몇 개인지 구하는 프로그램을 작성하시오.

입력

첫째 줄에 정수의 개수 N(1 ≤ N ≤ 100)이 주어진다. 둘째 줄에는 정수가 공백으로 구분되어져있다. 셋째 줄에는 찾으려고 하는 정수 v가 주어진다. 입력으로 주어지는 정수와 v는 -100보다 크거나 같으며, 100보다 작거나 같다.

출력

첫째 줄에 입력으로 주어진 N개의 정수 중에 v가 몇 개인지 출력한다.


간단하게 사용자로부터 받아온 입력값 리스트 중 v의 개수를 출력하면 되는 문제다.

 

'정답 코드'

from collections import Counter

N = int(input())
num = list(map(int, input().split()))
v = int(input())

counter = Counter(num)

print(counter[v])

파이썬 표준 라이브러리 collections의 카운터를 사용하여 풀었다.

 

'돌아보기'

다른 사람들의 코드를 둘러보며 리스트 자체의 count() 함수를 많이 사용하여 위 문제를 풀었다는 것을 알 수 있었다. 파이썬 초짜인 나는 얼마 전에 배운 것과 같이 Counter를 사용헀는데 count()와 Counter()의 차이는 뭘까?

count() Counter()
내장 함수 외장 함수, 즉 collections 모듈을 import 해야 사용 가능
배열, 문자열 둘 다 사용 가능
배열 내의 원소 x가 등장하는 횟수 반환 배열 내의 모든 원소 값의 개수 세어줌

다른 블로그에서 Counter()의 기능이 훨씬 뛰어나다고 들었는데 10807번 문제의 경우에는 내장함수 count() 함수를 썼을 떄의 코드 길이가 짧아서 그런지 Counter()를 사용했을 때보다 메모리와 실행속도가 더 우월했다.

문제에 따라 효율성을 따져 잘 적용하면 될 듯 싶다.