codekata

[프로그래머스] #13 자릿수 더하기 (iterable)

kinggoddino 2024. 7. 17.

▶ 문제

자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 함수 만들기.

ex) N = 123 이면 1 + 2 + 3 = 6 을 return 한다.

 

▶ 제한사항

N의 범위 : 100,000,000 이하의 자연수

 

▶ 풀이

def solution(n):
    answer = 0           # 숫자변수, 초기값=0
    for i in n:          # n을 돌면서
        answer += i      # 하나씩 더하기
    return answer
    
# TypeError: 'int' object is not iterable

ㅠ 오답,...

숫자형 'int' 객체는 반복할 수가 없다.

 

iterable을 여기서 보네!!! 수업중에 들었던거다.

각 자료형은 class로 지정되어 있는데 class 속성 중에  __iter__라는 매직 메서드가 들어가 있어야만 iterable 객체이며 for문을 통해 반복을 돌릴 수 있다.(기억 쥐어짜내기)

 

그럼 int 를 문자열로 바꿔줘야지

def solution(n):
    str_n = str(n)         # str()로 문자로 바꿔줌
    answer = 0
    for i in str_n:        # 문자는 반복 가능
        answer += i
    return answer
    
# TypeError: unsupported operand type(s) for +=: 'int' and 'str'

또 오답...ㅠ,

숫자형 'int'와 문자열 'str'는 더할 수 없다.

아 answer가 0이니까 숫자인데 i는 문자로 변환된 상태니까 더할 수가 없다. 오키

 

그럼 다시 i를 숫자형으로 바꿔주면 되나

def solution(n):
    str_n = str(n)
    answer = 0
    for i in str_n:          # 문자로 반복 돌린 다음에
        answer += int(i)     # int()로 숫자로 바꿔서 더함
    return answer

오예 맞았다!!!!!!!!!!

 

막 틀린 다음에 에러코드를 잘 읽어보기