사용자로부터 입력받은 튜플이 주어졌을 때, 그 안에서 특정 요소가 몇 번 나타나는지 세는 것이 이번 글의 목표입니다. 예를 들어 리스트 [10, 20, 30, 40, 10, 100, 80, 10]에서 숫자 10의 등장 횟수를 구한다면 결과는 3이 되어야 합니다.
예제
입력 : A = [10, 20, 30, 40, 10, 100, 80, 10]
X = 10
출력 : 3
알고리즘
요소의 등장 횟수를 세는 절차는 다음과 같습니다.
countoccur(A, x) /* A는 배열(리스트), x는 등장 횟수를 셀 요소 */ 1단계: 동일한 요소의 개수를 셀 카운터 변수를 하나 준비합니다. 2단계: 튜플 전체를 순회(traverse)합니다. 3단계: x를 튜플의 모든 요소와 하나씩 비교합니다. 4단계: 요소가 x와 일치하면 카운터를 1 증가시킵니다. 5단계: 카운터 변수를 반환합니다.
예제 코드
# 튜플(리스트)에서 특정 요소의 등장 횟수를 세는 프로그램
def countoccur(A, x):
c = 0
for i in A:
if (i == x):
c = c + 1
return c
# 드라이버 코드
A = list()
n1 = int(input("리스트의 크기를 입력하세요 :: "))
print("리스트의 요소를 입력하세요 ::")
for i in range(int(n1)):
k = int(input(""))
A.append(k)
n = int(input("등장 횟수를 셀 요소를 입력하세요 :: "))
print("숫자", n, "의 등장 횟수는", countoccur(A, n), "입니다")
실행 결과
리스트의 크기를 입력하세요 :: 6 리스트의 요소를 입력하세요 :: 12 23 45 12 89 12 등장 횟수를 셀 요소를 입력하세요 :: 12 숫자 12 의 등장 횟수는 3 입니다
더 간단한 방법: count() 메서드 활용
위처럼 직접 반복문을 작성하는 방식 외에도, 파이썬에서는 튜플과 리스트에 기본 내장된 count() 메서드를 사용하면 한 줄로 같은 결과를 얻을 수 있습니다.
A = [10, 20, 30, 40, 10, 100, 80, 10] print(A.count(10)) # 출력: 3
count() 메서드는 내부적으로 위 알고리즘과 동일하게 모든 요소를 한 번씩 확인하므로, 시간 복잡도는 두 방식 모두 O(n)입니다. 학습 목적이라면 직접 구현해 보고, 실무에서는 간결한 count() 메서드를 활용하는 것을 권장합니다.