ALGORITHM/PROGRAMMERS
[프로그래머스] 짝수와 홀수 - JavaScript
thisisyjin
2022. 7. 6. 17:21
javascript
문제 설명
자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요.
예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다.
제한 조건
- N의 범위 : 100,000,000 이하의 자연수
예시
입출력 예
N answer
123 6
987 24
입출력 예 설명
입출력 예 #1
문제의 예시와 같습니다.
입출력 예 #2
9 + 8 + 7 = 24이므로 24를 return 하면 됩니다.
내가 작성한 코드
function solution(n)
{
let sum = 0;
for (let num of String(n)) {
sum += +num;
}
return sum;
}
삼항 연산자를 이용하여 'Even'과 'Odd'중에 하나를 리턴한다.
실행 결과
테스트 1 〉 통과 (0.05ms, 30.1MB)
테스트 2 〉 통과 (0.05ms, 30.2MB)
테스트 3 〉 통과 (0.05ms, 30MB)
테스트 4 〉 통과 (0.05ms, 30.2MB)
테스트 5 〉 통과 (0.05ms, 29.9MB)
테스트 6 〉 통과 (0.08ms, 30.3MB)
테스트 7 〉 통과 (0.05ms, 29.9MB)
테스트 8 〉 통과 (0.05ms, 30.2MB)
테스트 9 〉 통과 (0.05ms, 30.1MB)
테스트 10 〉 통과 (0.06ms, 30.2MB)
테스트 11 〉 통과 (0.05ms, 30.1MB)
테스트 12 〉 통과 (0.05ms, 29.9MB)
테스트 13 〉 통과 (0.05ms, 30.1MB)
테스트 14 〉 통과 (0.05ms, 30.1MB)
테스트 15 〉 통과 (0.14ms, 30.1MB)
테스트 16 〉 통과 (0.05ms, 29.9MB)
테스트 17 〉 통과 (0.06ms, 30MB)
테스트 18 〉 통과 (0.05ms, 30MB)
테스트 19 〉 통과 (0.06ms, 30.2MB)
테스트 20 〉 통과 (0.05ms, 29.9MB)
테스트 21 〉 통과 (0.05ms, 30.1MB)
다른 방법
function solution(n)
{
return Array.from(String(n)).map(x => Number(x)).reduce((prev, cur) => prev + cur);
}
배열의 합을 구하는 reduce
메서드를 이용한 방법이다.
실행 결과
테스트 1 〉 통과 (0.08ms, 30.2MB)
테스트 2 〉 통과 (0.09ms, 30.1MB)
테스트 3 〉 통과 (0.06ms, 30.1MB)
테스트 4 〉 통과 (0.09ms, 30.2MB)
테스트 5 〉 통과 (0.06ms, 30.2MB)
테스트 6 〉 통과 (0.06ms, 30.2MB)
테스트 7 〉 통과 (0.05ms, 30.2MB)
테스트 8 〉 통과 (0.06ms, 30.3MB)
테스트 9 〉 통과 (0.11ms, 29.9MB)
테스트 10 〉 통과 (0.07ms, 30.3MB)
테스트 11 〉 통과 (0.06ms, 30.1MB)
테스트 12 〉 통과 (0.09ms, 30.3MB)
테스트 13 〉 통과 (0.06ms, 29.8MB)
테스트 14 〉 통과 (0.06ms, 30MB)
테스트 15 〉 통과 (0.10ms, 30.3MB)
테스트 16 〉 통과 (0.06ms, 30.1MB)
테스트 17 〉 통과 (0.06ms, 30.2MB)
테스트 18 〉 통과 (0.06ms, 30MB)
테스트 19 〉 통과 (0.09ms, 30.2MB)
테스트 20 〉 통과 (0.07ms, 30.1MB)
테스트 21 〉 통과 (0.05ms, 30.2MB)
reduce 메서드를 실행하기 전에 map으로 String 을 Number로 바꿔주는 과정이 필요하다보니
성능은 별로인듯 하다.
+) 참고로, 아래와 같이 reduce 자체에서 Number을 해봤는데, 테스트 21에서 실패했다.
return Array.from(String(n)).reduce((prev, cur) => Number(prev) + Number(cur));