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

판다스 시리즈로 1부터 100까지의 매직 넘버 찾기: 파이썬 프로그래밍 가이드

1부터 100까지의 숫자 중에서 매직 넘버(magic number)를 찾아 판다스 시리즈로 변환하면 다음과 같은 결과를 얻을 수 있습니다.

magic number series:
0        1
1       10
2       19
3       28
4       37
5       46
6       55
7       64
8       73
9       82
10      91
11     100

매직 넘버란 각 자릿수의 합이 최종적으로 1이 되는 수를 의미합니다. 예를 들어 10은 1+0=1이므로 매직 넘버이며, 19는 1+9=10이 되고 다시 1+0=1이 되어 매직 넘버에 해당합니다. 이 문제는 두 가지 방법으로 해결할 수 있습니다.

해결 방법 1: 람다 필터 함수 활용

  • 리스트 컴프리헨션(list comprehension)을 사용하여 1부터 100까지의 값을 리스트 ls에 저장합니다.

ls = [i for i in range(1,101)]
  • 람다(lambda) 필터 함수를 적용하여 9로 나눈 나머지가 1인 값만 추출합니다.

l = list(filter(lambda i:i%9==1,ls))
  • 필터링된 리스트 l로 판다스 시리즈를 생성합니다.

pd.Series(l)

예제 코드

아래 코드를 통해 더 쉽게 이해할 수 있습니다.

import pandas as pd
ls = [i for i in range(1,101)]
l = list(filter(lambda i:i%9==1,ls))
print("magic number series:\n",pd.Series(l))

출력 결과

magic number series:
0        1
1       10
2       19
3       28
4       37
5       46
6       55
7       64
8       73
9       82
10      91
11     100

해결 방법 2: 자릿수 합 계산

  • 빈 리스트를 하나 생성합니다.

  • for 반복문의 범위를 1부터 101 미만으로 설정하고, 자릿수 합을 저장할 변수 digit_sum을 0으로 초기화합니다.

for i in range(1,101):
    digit_sum = 0
  • i 값을 임시 변수 temp에 할당하여 원본 값이 변경되지 않도록 합니다.

  • while 반복문의 조건을 temp > 0으로 설정합니다.

  • 나머지 연산과 몫 연산을 활용해 자릿수 합을 다음과 같이 계산합니다.

while(temp>0):
    rem = temp % 10
    digit_sum = digit_sum + rem
    temp = temp // 10
  • 마지막으로 if 조건문으로 digit_sum이 1 또는 10인지 확인하고, 조건이 참이면 해당 값을 리스트에 추가합니다.

if(digit_sum==1 or digit_sum==10):
    l.append(i)
  • 최종적으로 완성된 리스트로부터 판다스 시리즈를 생성합니다.

예제 코드

다음 전체 코드를 통해 로직을 더 자세히 살펴보겠습니다.

import pandas as pd
l = []
for i in range(1,101):
    digit_sum = 0
    temp = i
    while(temp>0):
        rem = temp % 10
        digit_sum = digit_sum + rem
        temp = temp // 10
    if(digit_sum==1 or digit_sum==10):
        l.append(i)
print("magic number series:\n",pd.Series(l))

출력 결과

magic number series:
0        1
1       10
2       19
3       28
4       37
5       46
6       55
7       64
8       73
9       82
10      91
11     100

첫 번째 방법은 수학적 규칙(9로 나눈 나머지가 1)을 활용해 간결하게 처리하는 반면, 두 번째 방법은 자릿수 합을 직접 계산하므로 매직 넘버의 정의를 명확하게 구현한다는 장점이 있습니다. 상황에 맞게 선택하여 활용하시기 바랍니다.