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

파이썬(Python)으로 리스트에서 홀수 번 등장하는 요소 찾는 프로그램

리스트에서 홀수 번 등장하는 요소를 찾아야 하는 경우, 별도의 메서드를 정의하여 해결할 수 있습니다. 이 메서드는 리스트를 순회하면서 중첩 루프를 통해 각 요소가 다른 요소와 일치하는지 확인합니다. 일치하는 경우가 있으면 카운터 값을 1씩 증가시키고, 최종 카운트가 2로 나누어떨어지지 않는다면(즉, 홀수 번 등장했다면) 해당 요소를 결과로 반환합니다. 만약 조건을 만족하는 요소가 없다면 -1을 반환합니다.

다음은 이를 구현한 예시입니다.

예제 코드

def odd_occurence(my_list, list_size):

   for i in range(0, list_size):
      count = 0
      for j in range(0, list_size):
         if my_list[i] == my_list[j]:
            count+= 1

      if (count % 2 != 0):
         return my_list[i]

   return -1
my_list = [34, 56, 78, 99, 23, 34, 34, 56, 78, 99, 99, 99, 99, 34, 34, 56, 56 ]
print("The list is :")
print(my_list)
n = len(my_list)
print("The length is :")
print(n)
print("The method to find the element that occurs odd number of times is called ")
print("The element that occurs odd number of times is :")
print(odd_occurence(my_list, n))

실행 결과

The list is :
[34, 56, 78, 99, 23, 34, 34, 56, 78, 99, 99, 99, 99, 34, 34, 56, 56]
The length is :
17
The method to find the element that occurs odd number of times is called
The element that occurs odd number of times is :
34

코드 설명

  • 'odd_occurence'라는 이름의 메서드를 정의하고, 리스트와 리스트의 크기를 매개변수로 받습니다.

  • 리스트의 크기를 반복 범위로 삼아 리스트 전체를 순회합니다.

  • 두 개의 중첩 루프를 실행하면서, 첫 번째 루프와 두 번째 루프에서 가리키는 요소가 서로 일치하면 'count' 변수의 값을 증가시킵니다.

  • 'count' 변수의 값이 홀수라면, 해당 위치의 리스트 요소를 반환합니다.

  • 정수로 이루어진 리스트를 정의한 뒤 콘솔에 출력합니다.

  • 리스트의 길이를 변수에 저장합니다.

  • 필요한 매개변수를 전달하여 메서드를 호출합니다.

  • 메서드의 반환값을 콘솔에 출력합니다.

참고: 성능 개선 방법

위 방식은 이중 루프를 사용하기 때문에 시간 복잡도가 O(n²)입니다. 리스트의 크기가 커지면 실행 속도가 느려질 수 있습니다. 이 경우 collections.Counter를 사용해 각 요소의 등장 횟수를 한 번에 계산하거나, XOR 비트 연산을 활용하면 O(n) 수준으로 성능을 개선할 수 있습니다. 특히 XOR 방법은 짝수 번 등장하는 요소들이 서로 상쇄되어 결국 홀수 번 등장하는 요소만 남게 된다는 원리를 이용합니다.