Link : 프로그래머스 > 연습문제 > 자릿수 더하기
Language : Python3
💡 자리수 분리
better
⑴ 문자열로 변환 후, 분리
def solution(n):
answer = 0
arr = []
for i in str(n):
arr.append(int(i))
for i in arr:
answer += i
return answer
처음 생각나는대로 적은 코드이다. 통과는 하지만 for loof 가 두 번이나 돌고있는 점에서 좋은 코드는 아니다.
⑵ map() 함수
def solution(n):
answer = 0
n = list(map(int, str(n)))
for i in n :
answer += i
return answer
첫 번째 코드에서 형변환이 영 불편하게 느껴져서, map()
함수를 쓰면 되겠다 싶었다. map()
의 두번째 인자는 interable 해야하므로 str로 형변환 시켜주는 것만 주의하면 된다.
⑶ 나머지 계산 ›› better
def solution(n):
answer = 0
while n>0:
answer += n%10
n = n//10
return answer
나머지 계산법도 생각나서 써봤다. 문자열로 푸는 방법보다 정수형으로 푸는 이 방법이 더 효율적이라 한다. 아무래도 문자열 방법은 형변환 때문에 속도가 더 느리다.
⑴ sum() 함수
정수 리스트에 sum() 함수를 이용하면 원소의 합을 구해준다.
def solution(n):
return sum([int(i) for i in str(n)])
⑵ map() 함수
다른 사람의 풀이를 보고나니,
map()
함수 코드도 for문으로 원소들을 합할게아니라sum()
함수를 쓰면 한줄로 줄일 수 있었다.
def solution(n):
return sum(map(int,str(n)))
⑶ 나머지 계산 : 재귀함수가 사용된 나머지 계산 ›› better
def solution(n):
if number < 10:
return n;
return (n % 10) + sum_digit(number // 10)
sum()
은 Iterable인 list, tuple, dictionary의 합을 리턴하는 함수입니다. 숫자만 가능하며, 숫자가 아닌 객체가 있을 때 TypeError가 발생합니다