문제 설명
정수 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() 함수 한 줄이면 끝나네
- 파이썬 공부 열심히 하자
'Programmers > Python' 카테고리의 다른 글
| [프로그래머스] [Python] 외계행성의 나이 (0) | 2022.11.26 |
|---|---|
| [프로그래머스] [Python] 배열 회전시키기 (0) | 2022.11.26 |
| [프로그래머스] [Python] 점의 위치 구하기 (0) | 2022.11.14 |
| [프로그래머스] [Python] 짝수는 싫어요 (0) | 2022.11.14 |
| [프로그래머스] [Python] A로 B 만들기 (0) | 2022.11.14 |