문제 설명

정수 n이 매개변수로 주어질 때 n의 각 자리 숫자의 합을 return 하도록 solution 함수를 완성해주세요.

 

제한사항

  • 0 ≤ n ≤ 1,000,000

 

입출력 예

n result
1234 10
930211 16

 

내 풀이

def solution(n):
    answer = 0
    array = [i for i in str(n)]
        for k in array:
            answer += int(k)
    return answer

 

회고

  • 만만한  range()  함수를 먼저 쓰려고 했는데, 이렇게 하니 for문이 진짜로 930,211번 돌아서 코드가 아예 안 돌아갔다.
  • 그래서 우선 n만큼의 요소를 리스트를 만들어주었다.
    •  str()  함수를 통해 문자형 요소를 가지는 리스트로 만들었다.
    • 코드를 간단하게 표현하려고 리스트 컴프리헨션을 이용했고, 이를 새로운 변수 array에 담았다.
  • 이걸 한 줄로 표현하면  list(map(int, str(n)))  (다들 천재들인가)
    •  str(n) 을 다시 숫자(int)로 바꾸면서 이를 리스트로 만듦
  • array 리스트를 돌면서 각 요소를 answer에 담는다 → 각 자릿수를 더한 것이나 마찬가지
    • array 리스트를 도는 k는 문자이기 때문에,  int()  함수를 통해 다시 숫자로 바꿔주었다.
    • 이것도  sum()  함수 한 줄이면 끝나네
  • 파이썬 공부 열심히 하자

 

복사했습니다!