문제
sum_digit함수는 자연수를 전달 받아서 숫자의 각 자릿수의 합을 구해서 return합니다. 예를들어 number = 123이면 1 + 2 + 3 = 6을 return하면 됩니다. sum_digit함수를 완성해보세요.
풀이
1 2 3 4 5 6 | def sum_digit(number): '''number의 각 자릿수를 더해서 return하세요''' return sum([int(i) for i in str(number)]) # 아래는 테스트로 출력해 보기 위한 코드입니다. print("결과 : {}".format(sum_digit(123))); | cs |
- str(number) 을 통하여 받은 숫자를 문자열로 변환 : 각 자리를 세기 위하여
- for i i str(number)을 통해 가져온 것은 '1', '2', '3' 이라는 문자일 뿐이므로 int 형으로 바꿔주기 위하여 int (i)를 통해 변환해준다.
- sum 함수를 사용하여 가져온 수를 더한다.
짧게 풀이해보자는 마음으로 했기에 각 방법은 여러가지 풀이가 나올 수 있다.
sum 함수의 사용 대신 for 문안에서 int(i) 로서 각각 더하게 만드는 방법도 있다.
1 2 3 | sum = 0 for i in str(number): sum = sum+int(i) | cs |
이런식으로 하는데 주의할 점은 number 을 문자열로 했으니 다시 int 형으로 바꿔줘야 한다는 것이다.
'코딩테스트 연습 > Python' 카테고리의 다른 글
[level1] 완주하지 못한 선수 (0) | 2020.04.17 |
---|---|
[leve1] x 만큼 간격이 있는 n개의 숫자 (0) | 2017.11.30 |
[leve1] 딕셔너리 정렬 (0) | 2017.11.30 |