반응형

 

출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges

 

 

 

 

 

** Javascript

 

 

1) 맨 처음 제출한 코드는 이렇다.

 

function solution(n)
{
    let answer = 0;
    const string = `${n}`;
    for (var i=0; i<string.length; i++) {
        answer += parseInt(string[i]);
    }
    return answer;
}

 

 

2) Array.from() 과 reduce 를 활용하면 이렇게까지 줄일 수 있다.

 

function solution(n)
{
    return Array.from(n.toString()).reduce((acc, curr) => acc += parseInt(curr), 0);
}

 

 

3) 숫자 n 을 string 으로 만들지 않는 풀이는 다음과 같다.

 

function solution(n)
{
    let answer = 0;
    while(n > 0) {
        answer += n % 10;
        n = Math.floor(n / 10);
    }
    return answer;
}

 

 

 

 

** Java

 

 

 

1) 숫자로만 자릿수를 구해서 합산하는 방법

 

import java.util.*;

public class Solution {
    public int solution(int n) {
        int answer = 0;
        while (n > 0) {
            answer += n % 10;
            n = n / 10;
        }
        return answer;
    }
}

 

 

2) 숫자를 문자열 배열에 쪼개서 넣어준 뒤 합산

 

근데 이 방식은 속도가 1)보다 느리다.

 

import java.util.*;

public class Solution {
    public int solution(int n) {
        int answer = 0;
        String[] numbers = Integer.toString(n).split("");
        for(String number : numbers){
            answer += Integer.parseInt(number);
        }
        return answer;
    }
}

 

 

 

 

** Python

 

 

1) 숫자로만 자릿수 구하여 합산

 

def solution(n):
    answer = 0
    while(n > 0):
        answer += n % 10
        n = n // 10
    return answer

 

 

2) 숫자를 toString 하여 sum

 

Python의 경우도 1) 의 계산 속도가 더 빠르다

 

def solution(n):
    return sum([int(i) for i in str(n)])
반응형

+ Recent posts