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

Python으로 각 자릿수가 오름차순인 요소만 리스트에서 추출하는 방법

리스트에서 각 자릿수가 오름차순(증가하는 순서)으로 배열된 숫자만 골라내야 하는 경우가 있습니다. 예를 들어 4578처럼 4 → 5 → 7 → 8로 계속 커지는 숫자는 해당되지만, 113처럼 중간에 같거나 작아지는 숫자는 제외됩니다.

이런 조건을 만족하는 요소를 추출하려면 간단한 반복문과 불리언(Boolean) 플래그 변수, 그리고 문자열 변환을 위한 str() 메서드를 활용하면 됩니다.

예제 코드

my_list = [4578, 7327, 113, 3467, 1858]

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

my_result = []

for element in my_list:
    my_flag = True
    for index in range(len(str(element)) - 1):

        if str(element)[index + 1] <= str(element)[index]:
            my_flag = False

    if my_flag:
        my_result.append(element)

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

실행 결과

The list is :
[4578, 7327, 113, 3467, 1858]
The result is :
[4578, 3467]

코드 설명

  • 먼저 숫자들이 담긴 리스트를 정의하고 콘솔에 출력합니다.

  • 조건을 만족하는 요소를 저장할 빈 리스트 my_result를 생성합니다.

  • 원본 리스트를 반복(iteration)하면서 각 요소마다 플래그 변수를 True로 초기화합니다.

  • 각 요소를 str()로 문자열로 변환한 뒤, 인접한 두 자릿수를 차례대로 비교합니다.

  • 비교 과정에서 뒤의 자릿수가 앞의 자릿수보다 작거나 같으면, 즉 오름차순이 깨지면 플래그를 False로 설정합니다.

  • 모든 자릿수를 검사한 후에도 플래그가 True로 유지된다면, 해당 숫자는 완전한 오름차순이므로 결과 리스트에 추가(append)합니다.

  • 마지막으로 최종 결과 리스트를 콘솔에 출력합니다.

핵심 포인트

이 알고리즘의 시간 복잡도는 O(n × d)입니다. 여기서 n은 리스트의 요소 개수, d는 각 숫자의 자릿수 길이입니다. 숫자를 문자열로 변환해 인덱스로 접근하기 때문에 별도의 수학적 연산 없이 직관적으로 자릿수를 비교할 수 있다는 점이 특징입니다.