배우고 느낀 것들
자릿수의 합 구하기 (Nonetype 에러 해결) 본문
🍒 문제 링크
🍒 문제 분석
1. sum_digit 함수를 이용해 각 자리의 합을 구하기
2. sum_digit(1) ~ sum_digit(1000) 의 합계 구하기
🍒 내 코드
def sum_digit(num):
length = len(str(num))
answer = 0
for i in range(1, length+1):
answer += num % (10 ** i) // (10 ** (i-1))
num -= num % (10 ** i)
return answer
# sum_digit(1)부터 sum_digit(1000)까지의 합 구하기
real_answer = 0
for k in range(1, 1001):
real_answer += sum_digit(k)
print(real_answer)
🍓 내 해결 과정
🌽 다른 사람 코드
def sum_digit(num):
total = 0
str_num = str(num)
for digit in str_num:
total += int(digit)
return total
굳이 일일히 나눠서 몫을 구하고, 또 기존 숫자에서 빼서 새롭게 나누는 대신, 그냥 문자열로 바꿔 각 값을 불러와 정수형으로 변환, 더하면 쉬움,,,
def solution(N):
answer = 0
while(N>0):
answer+=(N%10)
N=N//10
return answer
매번 값을 빼주는 대신, N = N // 10 으로 하면 훨씬 깔끔한 식.
숫자의 총길이도 length로 설정하고 for 문을 작성하는 것보다 while 문 작성하게 되면 더 깔끔한듯!
def sum_digits(n):
if n < 10:
return n
# recursive case
return sum_digits(n // 10) + (n % 10)
재귀함수를 이용한 더 깔끔한 식!
🍉 깨달은 점 및 정리
* 함수의 마지막 결과를 print() 로 설정하니, 이후 해당 함수값을 구하는 과정에서 nonetype형식과 관련한 에러 발생.
int 값이 그대로 반영되는 것이 아니라 출력되는 과정에서 형식이 None 으로 바껴 더하기가 불가능해졌다,,
-> 함수의 값 출력을 return 으로 변경하니, int값 그대로 출력되어 추가적인 연산이 가능해짐 !
참고
https://jsitclub.tistory.com/59
파이썬 - 프로그래머스 - 자릿수 더하기
프로그래머스 level 1 문제 설명 자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요. 예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다. 제한사항 N의 범위
jsitclub.tistory.com
'파이썬 > 문제' 카테고리의 다른 글
주민번호 뒷자리 가리기 (0) | 2023.03.22 |
---|---|
피타고라스 삼조 찾기 (0) | 2023.03.14 |
[코드트리] 숫자의 계절은 (1) | 2022.10.08 |
[코드트리] 좌우로 움직이는 로봇 (0) | 2022.10.03 |
[코드트리] datetime to datetime (1) | 2022.09.26 |
Comments