https://school.programmers.co.kr/learn/courses/30/lessons/120851
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
[ 문제 ]

[ 내 풀이 ]
function solution(my_string) {
// 문자열을 문자 배열로 분리합니다.
let new_string = my_string.split('');
// 합계를 저장할 변수를 초기화합니다.
let sum = 0;
// 배열의 각 문자를 반복합니다.
for(let i=0; i<new_string.length; i++){
// 문자가 숫자인지 확인합니다.
if(!isNaN(new_string[i])){
// 숫자라면, 숫자로 변환하여 합계에 추가합니다.
sum += Number(new_string[i]);
}
}
// 모든 숫자의 합계를 반환합니다.
return sum;
}
[ 다른 풀이 ]
// 정규식을 활용한 풀이법
function solution(my_string) {
// 문자열에서 숫자가 아닌 모든 문자를 제거합니다.
const answer = my_string.replace(/[^0-9]/g, '')
// 제거된 숫자들만 남은 문자열을 각 숫자 단위로 분리합니다.
.split('')
// 각 숫자를 Number 타입으로 변환하여 모두 더합니다.
.reduce((acc, curr) => acc + Number(curr), 0);
// 최종 결과를 반환합니다.
return answer;
}
// 전개연산자와 reduce를 활용한 풀이법
// 아래코드는 코드에 대한 설명을 위해 기존코드를 분리하였습니다.
function solution(my_string) {
// my_string을 스프레드 연산자를 사용하여 문자 배열로 변환하고,
return [...my_string]
// reduce 함수를 사용하여 각 문자를 순회하며 숫자만 합산합니다.
.reduce((acc, cur) =>
// 현재 문자가 숫자인 경우 숫자로 변환하여 합산합니다.
// 문자가 숫자가 아닌 경우 현재 누적 값을 그대로 반환합니다.
Number(cur) ? +acc + +cur : acc,
0); // 초기 누적 값은 0입니다.
}
// 아래코드는 원본코드입니다.
function solution(my_string) {
return [...my_string].reduce((acc,cur)=>Number(cur) ? +acc + +cur : acc, 0)
}
// for of를 활용한 풀이법
function solution(my_string) {
// 숫자의 합을 저장할 변수 sum을 0으로 초기화합니다.
let sum = 0;
// 주어진 문자열 my_string의 각 문자를 순회합니다.
for (const ch of my_string) {
// 현재 문자가 숫자인지 확인합니다.
if (!isNaN(ch)) {
// 문자가 숫자인 경우, 숫자로 변환하여 sum에 더합니다.
sum += +ch;
}
}
// 최종 합계를 반환합니다.
return sum;
}반응형
'Algorithm > Javascript' 카테고리의 다른 글
| [ 프로그래머스 ] 배열 원소의 길이 ( JS ) (0) | 2024.07.14 |
|---|---|
| [ 프로그래머스 ] 컨트롤 제트 ( JS ) (0) | 2024.07.13 |
| [ 프로그래머스 ] 합성수 찾기 ( JS ) (0) | 2024.06.28 |
| [ 프로그래머스 ] 주사위의 개수 ( JS ) (0) | 2024.06.26 |
| [ 프로그래머스 ] 배열 회전시키기 ( JS ) (0) | 2024.06.24 |
