리스트에서 연속으로 반복되는 요소들을 찾아, 각 요소를 반복 횟수만큼 거듭제곱한 뒤 모두 더해야 하는 경우가 있습니다. 이럴 때 'if' 조건문과 간단한 반복문, 그리고 '**' 거듭제곱 연산자를 활용하면 손쉽게 해결할 수 있습니다.
예제
아래는 실제 구현 예시입니다.
my_list = [21, 21, 23, 23, 45, 45, 45, 56, 56, 67]
print("The list is :")
print(my_list)
my_freq = 1
my_result = 0
for index in range(0, len(my_list) - 1):
if my_list[index] != my_list[index + 1]:
my_result = my_result + my_list[index] ** my_freq
my_freq = 1
else:
my_freq += 1
my_result = my_result + my_list[len(my_list) - 1] ** my_freq
print("The resultant value is :")
print(my_result)출력
The list is : [21, 21, 23, 23, 45, 45, 45, 56, 56, 67] The resultant value is : 95298
동작 원리 설명
먼저 리스트를 정의하고 콘솔에 출력합니다.
반복 횟수(빈도)를 저장할 변수
my_freq와 결과를 저장할 변수my_result를 각각 1과 0으로 초기화합니다.리스트를 처음부터 끝까지 순회하면서, 현재 요소와 바로 다음 요소를 비교하는 'if' 조건을 검사합니다.
두 요소가 서로 다르면, 현재 요소를 지금까지 누적된 빈도만큼 거듭제곱하여 결과 변수에 더한 뒤, 빈도를 다시 1로 초기화합니다.
두 요소가 같으면, 빈도 변수를 1 증가시켜 동일 요소의 반복 횟수를 계속 추적합니다.
반복문이 종료된 후에는 리스트의 마지막 요소가 처리되지 않으므로, 마지막 요소를 남은 빈도만큼 거듭제곱하여 결과에 추가로 더해줍니다.
최종적으로 계산된 결과 값이 콘솔에 출력됩니다.
계산 과정 살펴보기
예제 리스트에서 각 요소의 반복 횟수를 기준으로 거듭제곱을 계산하면 다음과 같습니다.
21² + 23² + 45³ + 56² + 67¹ = 441 + 529 + 91125 + 3136 + 67 = 95298
즉, 연속으로 나타나는 동일한 요소들을 하나의 그룹으로 묶어, 각 요소를 그룹의 크기(반복 횟수)만큼 거듭제곱한 후 모두 합산한 것이 최종 결과입니다.