본문 바로가기
내일배움 과제/기타 과제

알고리즘 13번 -추가공부

by GREEN나무 2024. 11. 13.
728x90

JS

문제

자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요.
예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다.

제한사항
N의 범위 : 100,000,000 이하의 자연수


계획

n을 문자열로 만들고 숫자의 배열로 바꾸고 함산하기S

문제

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

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

 

제한사항

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

 

계획

n을 문자열로 만들고 숫자의 배열로 바꾸고 함산하기


참고, 풀이

▷ 오답

function solution(n){
    var sum = 0;
    let strN = n.toString(10);
    return strN.reduce((sum, n) => sum + n, 0)
}

strN은 배열이 아니라 문자열이기에 풀어줘야 합니다( [...strN])

strN에서 추출한 n은 문자기에 숫자로 타입을 바꿔야 합니다. 그리고 'n'은 매게변수의 문자로 쓰이고 있으니 변수명을 바꿉니다.( Number(num))

 

▷ 음수도 처리하는 방법(값을 양수로 바꾸고 문자열 처리)

function solution(n) {
    let strN = Math.abs(n).toString(10); // 음수도 처리 가능
    return [...strN].reduce((sum, digit) => sum + Number(digit), 0);
}

음수도 처리하려면 Math.abs(n)을 사용해 양수로 변환하면 됩니다

 

 

▷  다른 방법 : n을 10으로 나눈 나머지 값을 더하기

function solution(n)
{
    let sum=0
    while (n>0){
        sum += n%10
    }
    return sum;
}

오류 : 실행 시간이 10.0초를 초과하여 실행이 중단되었습니다. 실행 시간이 더 짧은 다른 방법을 찾아보세요.

 


function solution(n){
    let strN = n.toString(10);
    return [...strN].reduce((sum, num) => sum + Number(num), 0);
}

 

do wile방법으로 하니 실행시간이 단축되었습니다.

function solution(n){
    var sum = 0;

    do {
        sum += n%10;
        n = Math.floor(n/10);
    } while(n > 0);

    return sum;
}

 

코드 간략화하기

숫자를 문자를 변환하면서 배열로 각 자리수를 분리해도 오류가 않나네...

function solution(N) {
    return [...String(N)].reduce((sum, digit) => sum + +digit, 0);
}

1. String(N): 숫자 N을 문자열로 변환합니다.
2. [...String(N)]: 문자열을 배열로 변환하여 각 자릿수를 분리합니다.
3. reduce: 배열의 각 자릿수를 순회하며 숫자로 변환(+digit)한 값을 누적합산합니다.

       'sum + +digit`은 문자열 `digit`을 숫자로 변환한 뒤 누적합(`sum`)에 더하기 위한 간결한 표현입니다.

      sum + (+digit)과 같은 표현입니다.
4. 초기값 0: 누적합이 시작되는 기본값입니다.


출처 

do wile방법 : https://themarketer.tistory.com/68

숫자 -> 문자열 : https://ashen99.tistory.com/234

reduce : https://ashen99.tistory.com/256


 

◆ C

더보기

◆ C

계획


참고, 풀이


//



코드 간략화하기

 


출처 

 

 

 

 

 

 

◆ C#

더보기

◆ C#

계획


참고, 풀이


//



코드 간략화하기

 


출처 

 

 

 

◆ C++

더보기

◆ C++

계획


참고, 풀이


//



코드 간략화하기

 


출처 

 

 

 

 

 

 

 

'내일배움 과제 > 기타 과제' 카테고리의 다른 글

알고리즘 15번 - 추가공부  (0) 2024.11.18
알고리즘 14번 - 추가공부  (0) 2024.11.13
알고리즘 12번 - 추가공부  (0) 2024.11.13
알고리즘 11번-추가공  (2) 2024.11.13
알고리즘 10번 - 추가공부  (0) 2024.11.12