알고리즘 CODEKATA 13 (자릿수 더하기)

오리너구리·2024년 5월 22일
0

CODEKATA

목록 보기
13/57

13 자릿수 더하기

문제 설명

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

예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다.


제한 사항

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

내 풀이

class Solution {
    fun solution(n: Int): Int {
        var answer = 0
        var num = n
        
        while(num>=1){
            answer += (num %10)
            num /= 10
        }    
        return answer
    }
}

풀면서 자릿수 어떻게 구해야 될지 감이 안 와서

인터넷에 검색해봤음

다른 사람 풀이

class Solution {
    fun solution(n: Int): Int {
        return n.toString().toSingleDigitList().sum()
    }

    fun String.toSingleDigitList() = map {
        "$it".toIntOrNull()
    }.filterNotNull()
}

확장함수를 만들어서 푼 사람도 있었다.

확장함수로 toSingleDigitList를 문자열의 각 문자를 정수로 변환하고 리스트로 만드는 기능으로 만들었다.

class Solution {
    fun solution(n: Int): Int {
        var answer : Int = 0
        for(item in n.toString().toCharArray()) answer += (item - '0')
        return answer
    }
}

이렇게 n을 문자열로 변환하고 → 문자 배열로 변환하고 , 각 문자를 다시 숫자로 변환해서 더 하는 방식으로 풀수도 있다!

item - ‘0’ 부분에서는 ASCII 코드 값을 이용한 변환이라고하는데 따로 검색해서 공부해야 할듯!


추가 공부할 것

  1. 확장 함수
  2. ASCII코드
profile
오리너구리입니다

0개의 댓글