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

파이썬으로 리스트에서 피크(봉우리)와 밸리(골짜기) 개수 구하는 방법

개요

리스트에서 피크(peak, 봉우리) 또는 밸리(valley, 골짜기)의 개수를 구해야 할 때는 간단한 반복문과 조건식만으로 손쉽게 해결할 수 있습니다.

여기서 피크란 자신의 양옆 요소보다 큰 값을 의미하고, 밸리는 양옆 요소보다 작은 값을 의미합니다. 아래 예제를 통해 직접 확인해 보겠습니다.

예제 코드

my_list = [11, 12, 24, 12, 36, 17, 28, 63]

print("The list is :")
print(my_list)

my_result = 0

for index in range(1, len(my_list) - 1):
    if my_list[index + 1] > my_list[index] < my_list[index - 1] or my_list[index + 1] < my_list[index] > my_list[index - 1]:
        my_result += 1

print("The result is :")
print(my_result)

실행 결과

The list is :
[11, 12, 24, 12, 36, 17, 28, 63]
The result is :
4

코드 설명

  • 먼저 리스트를 정의하고 콘솔에 출력합니다.

  • 결과를 저장할 정수 변수를 0으로 초기화합니다.

  • 리스트의 첫 번째와 마지막 요소를 제외한 나머지 요소들을 순회하며, 현재 요소가 이전 요소와 다음 요소보다 모두 큰지(피크), 또는 모두 작은지(밸리)를 검사합니다.

  • 조건을 만족하면 카운트 변수를 1씩 증가시킵니다.

  • 모든 순회가 끝나면 최종 결과를 콘솔에 출력합니다.

결과 분석

위 예제에서 피크와 밸리로 판별된 값은 다음과 같습니다.

  • 24 → 양옆(12, 12)보다 큰 피크

  • 12 → 양옆(24, 36)보다 작은 밸리

  • 36 → 양옆(12, 17)보다 큰 피크

  • 17 → 양옆(36, 28)보다 작은 밸리

따라서 총 4개의 피크와 밸리가 카운트되어 결과값 4가 출력됩니다. 참고로 파이썬의 연쇄 비교(chained comparison) 문법 덕분에 a > b < c처럼 간결하게 조건을 표현할 수 있다는 점도 눈여겨볼 만합니다.