티스토리 뷰
문제 설명
정수 n이 매개변수로 주어질 때 n의 각 자리 숫자의 합을 return하도록 solution 함수를 완성해주세요
제한 조건
0 ≤ n ≤ 1,000,000
내 답안
func solution(_ n:Int) -> Int {
return Array(String(n)).compactMap { Int(String($0)) }.reduce(0, +)
}
접근 방법
- 정수 n을 문자열 "n"으로 변환
- 문자열 "n"을 배여로 전환 -> ["", "", ""]
- compactMap를 사용해 각각을 문자열에서 정수로 변환
- reduce를 써서 정수로 바뀐 각 숫자들을 더해주기
다른 풀이
lution(_ n: Int) -> Int {
var mutableN = n
var answer = 0
while mutableN > 0 {
// 10으로 나눈 나머지는 가장 오른쪽 자리 숫자가 된다
// 123 이면 3
answer += mutableN % 10
// 오른쪽 자리 숫자를 제거하기 위해서 10으로 나눠준다
// mutableN은 정수기 때문에 소수점 아래 숫자는 삭제하기 때문이다
mutableN /= 10
}
return answer
}
문자열로 형변환하지 않고 수학적 연산으로 푸는 방법
func solution(_ n:Int) -> Int {
var array = Array(String(n))
return array.reduce(0) { Int(String($0))! + Int(String($1))!}
}
func solution(_ n:Int) -> Int {
return String(n).reduce(0){$0 + Int(String($1))!}
}
나랑 비슷한 방식인 거 같은데 순서가 달라서 기록해 둠
특히 첫 번째와 두 번째는 방식이 거의 똑같은데, 두 번째는 $0 (누적값)의 경우 형변환을 하지 않않다
0부터 시작해 정수로 변한 $1(배열의 요소) 를 저장하고 있기 때문에 $0은 형변환 하지 않아도 된다
알게 된 것
'코딩테스트' 카테고리의 다른 글
Lv.0 swift 모음 제거 (0) | 2024.03.18 |
---|---|
Lv.0 Swift 문자 반복 출력하기 (0) | 2024.03.18 |
Lv.0 Swift 점의 위치 구하기 (0) | 2024.03.18 |
Lv.0 swift 세균 증식 (0) | 2024.03.17 |
Lv.0 swift 짝수의 합 (0) | 2024.03.17 |
최근에 올라온 글