[알고리즘] While + pop을 이용한 효율적 알고리즘 작성

전도운·2024년 7월 26일
0
post-custom-banner

요소가 100만 개 이상 되는 매우 큰 리스트가 존재한다고 하자. 여기서 리스트의 요소를 하나씩 순회하면서 작업을 수행한다면 꽤 오랜 시간이 걸릴 수 있다. 이럴 때는 While문과 pop 메소드를 이용하면 조금 더 효율적으로 반복문을 사용할 수 있다.

  • 상황

    • 길이가 100만인 리스트에서 값을 하나씩 불러오면서 해당 값과 특정 값의 일치 여부를 비교하는 반복문
  • For문을 이용하는 경우

    • 아래와 같은 구문 작성이 가능한데, 일반적인 상황에서는 큰 문제가 없지만 주어진 상황처럼 길이가 방대한 자료에서 이를 처리하려면 시스템에 큰 부담을 줄 수 있다.
      def count_num(list, value):
          number = 0
          for i in list:
              if i == value:
                  number += 1
          return number
  • While문과 pop 메소드를 이용하는 경우

    • 만약에 리스트에서 사용한 값을 버리면서 순회를 하면 어떨까? While문과 pop 메소드를 사용하면 이러한 알고리즘 구현이 가능하다. 예를 들면 아래와 같다.

    • for 문을 사용하는 대신 while문을 사용하며, 리스트가 존재할 때까지 리스트의 첫 번째 값을 추출하여 비교하고 이를 제거하면 위와 동일한 결과를 구현할 수 있다.

      def count_num(list, value):
          number = 0
          i = 0
          while len(list) > 0:
              if list[i] == value:
                  number += 1
              list.pop(0)
          return number
profile
의미 있는 한걸음을 추구합니다.
post-custom-banner

0개의 댓글