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

Python에서 리스트가 증가와 감소를 번갈아 가는지 확인하는 프로그램

문제 개요

숫자로 이루어진 리스트 nums가 주어졌다고 가정해 보겠습니다. 이때 이 리스트가 엄격히 증가 → 엄격히 감소 → 엄격히 증가하는 식으로 증가와 감소를 번갈아 가며 변화하는지 확인해야 합니다. 단, 리스트 전체가 엄격히 증가만 하는 경우에도 유효한 것으로 간주합니다.

예시

입력이 nums = [2, 4, 8, 7, 5, 1, 5, 7, 2, 1]이라면 결과는 True입니다. 그 이유는 다음과 같습니다.

  • [2, 4, 8] → 증가
  • [7, 5, 1] → 감소
  • [5, 7] → 증가
  • [2, 1] → 감소

증가 구간과 감소 구간이 교대로 나타나므로 조건을 만족합니다.

해결 접근 방법

이 문제는 다음 단계를 따라 해결할 수 있습니다.

  • 리스트는 반드시 증가로 시작해야 하므로, nums[1] <= nums[0]이면 False를 반환합니다.
  • 리스트의 처음부터 끝까지 순회하면서, 인접한 두 요소 nums[i]nums[i-1]의 값이 서로 같으면 False를 반환합니다.
  • 위 검사를 모두 통과하면 True를 반환합니다.

즉, 이 코드는 리스트가 증가로 시작하는지와 인접한 요소 사이에 값이 같은 경우(엄격한 증가 또는 감소가 아닌 평평한 구간)가 존재하는지를 검사하여 유효성을 판단합니다.

구현 예제

다음 구현을 통해 더 자세히 이해할 수 있습니다.

def solve(nums):
    if nums[1] <= nums[0]:
        return False
    for i in range(len(nums)):
        if i - 1 >= 0:
            if nums[i] == nums[i - 1]:
                return False

    return True

nums = [2, 4, 8, 7, 5, 1, 5, 7, 2, 1]
print(solve(nums))

입력

[2, 4, 8, 7, 5, 1, 5, 7, 2, 1]

출력

True