문제 소개
숫자로 이루어진 리스트가 주어졌을 때, 그중 자릿수가 짝수인 숫자의 개수를 세는 문제를 생각해 봅시다.
예를 들어 배열이 [12, 345, 2, 6, 7896]이라면 결과는 2가 됩니다. 그 이유는 12(2자리)와 7896(4자리)만 자릿수가 짝수이고, 345와 2, 6은 자릿수가 홀수이기 때문입니다.
해결 접근 방법
이 문제는 다음 단계를 통해 간단히 해결할 수 있습니다.
- 리스트의 각 정수를 문자열(str)로 변환합니다.
- 변환된 문자열의 길이가 짝수라면 카운트(count)를 1 증가시킵니다.
- 모든 원소를 확인한 후 최종 카운트 값을 반환합니다.
구현 예제
아래 코드를 통해 실제 구현 방법을 확인해 보겠습니다.
class Solution(object):
def findNumbers(self, nums):
str_num = map(str, nums)
count = 0
for s in str_num:
if len(s) % 2 == 0:
count += 1
return count
ob1 = Solution()
print(ob1.findNumbers([12,345,2,6,7897]))
입력
[12,345,2,6,7897]
출력
2
코드 설명
map(str, nums)를 사용하면 리스트의 모든 정수를 한 번에 문자열로 변환할 수 있습니다. 문자열로 변환된 각 값에 대해 len() 함수로 길이(자릿수)를 구하고, 이 값이 2로 나누어 떨어지면 자릿수가 짝수이므로 카운트를 증가시킵니다. 이 방식의 시간 복잡도는 O(n)으로, 리스트의 크기에 비례하여 선형적으로 동작하므로 효율적입니다.