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 |