[TIL][프로그래머스/Swift] 자릿수 더하기

Eden·2024년 12월 4일
3

TIL

목록 보기
60/92
post-thumbnail

문제 설명

정수 n이 매개변수로 주어질 때 n의 각 자리 숫자의 합을 구하는 함수를 작성해야 한다.

제한사항

  • 0 ≤ n ≤ 1,000,000

입출력 예

nresult
123410
93021116

처음 쓴 코드

import Foundation

func solution(_ n:Int) -> Int {
    var sum = 0
    for i in String(n) {
        sum += Int(i)
    }
    return sum
}

간과한 점

  • 문자열의 각 문자를 바로 Int로 변환할 수 없다는 점을 간과했다. iCharacter 타입이기 때문에, 이를 정수로 변환하려면 추가적인 처리가 필요하다.

  • Int(i)로 직접 변환하려고 했는데, 이는 컴파일 오류를 일으킨다. Character 타입을 문자열로 먼저 변환한 후 정수로 변환해야 한다는 점을 실수했다.

리팩토링한 코드

import Foundation

func solution(_ n:Int) -> Int {
    var sum = 0
    for i in String(n) {
        if let digit = Int(String(i)) {
            sum += digit
        }
    }
    return sum
}

배운 점

  • Character 타입을 Int로 변환하기 위해서는 먼저 문자열로 변환해야 한다는 것을 되새겼다...
  • 옵셔널 바인딩(if let)을 통해 안전하게 값이 있는지 확인하고 사용하는 방법을 익혔다.
  • Swift에서 타입 변환을 할 때 항상 값이 존재하는지(nil이 아닌지) 확인하는 습관이 중요함을 다시 한 번 깨달았다.
profile
Frontend🌐 and iOS

0개의 댓글