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

Python으로 리스트에서 홀수 자릿수를 가진 요소 개수 구하기

양의 정수로 이루어진 리스트 nums가 주어졌을 때, 자릿수가 홀수인 요소의 개수를 구하는 문제입니다.

예를 들어 입력이 [1, 300, 12, 10, 3, 51236, 1245]라면 결과는 4가 됩니다. 각 숫자의 자릿수를 살펴보면 다음과 같습니다.

  • 1 → 1자리 (홀수) ✔
  • 300 → 3자리 (홀수) ✔
  • 12 → 2자리 (짝수)
  • 10 → 2자리 (짝수)
  • 3 → 1자리 (홀수) ✔
  • 51236 → 5자리 (홀수) ✔
  • 1245 → 4자리 (짝수)

따라서 자릿수가 홀수인 요소는 1, 300, 3, 51236의 총 4개입니다.

해결 접근 방법

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

  • 카운터 변수 c를 0으로 초기화합니다.
  • i를 0부터 nums의 길이까지 반복하면서 다음을 수행합니다.
    • s := nums[i]의 자릿수 (숫자를 문자열로 변환한 뒤 길이를 구하면 됩니다)
    • s가 홀수라면 c := c + 1
  • 반복이 끝나면 c를 반환합니다.

예제 코드

아래 구현을 통해 더 잘 이해해 보겠습니다.

class Solution:
    def solve(self, nums):
        c = 0
        for i in range(len(nums)):
            s = len(str(nums[i]))
            if s % 2 != 0:
                c = c + 1
    return c

ob = Solution()
print(ob.solve([1, 300, 12, 10, 3, 51236, 1245]))

입력

[1, 300, 12, 10, 3, 51236, 1245]

출력

4

코드 설명

핵심 아이디어는 len(str(nums[i])) 부분입니다. 숫자를 문자열로 변환하면 len() 함수를 사용해 손쉽게 자릿수를 구할 수 있습니다. 이후 나머지 연산자 %를 활용해 자릿수가 2로 나누어떨어지지 않는 경우(홀수)만 카운트하면 됩니다.

이 방법은 시간 복잡도 O(n × d)(n은 리스트 길이, d는 평균 자릿수)로 효율적이며, 코드도 간결해서 초보자에게 적합한 연습 문제입니다.