Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬 – 연속 요소 거듭제곱의 합 구하기

리스트에서 연속으로 반복되는 요소들을 찾아, 각 요소를 반복 횟수만큼 거듭제곱한 뒤 모두 더해야 하는 경우가 있습니다. 이럴 때 '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

즉, 연속으로 나타나는 동일한 요소들을 하나의 그룹으로 묶어, 각 요소를 그룹의 크기(반복 횟수)만큼 거듭제곱한 후 모두 합산한 것이 최종 결과입니다.