Q. 문자열 my_string이 매개변수로 주어집니다. my_string안의 모든 자연수들의 합을 return하도록 solution 함수를 완성해주세요.
function solution(my_string) {
let answer = 0;
let num = [...my_string].filter((el) => (el) >= 0).map((el)=>parseInt(el));
for (let i = 0 ; i <= num.length - 1; i++){
answer += num[i];
}
return answer;
}
- 1단계. 매개변수가 문자열이기 때문에, 이를 구분자로 나누고 배열로 감싸여 여러 메서드를 사용하도록 한다.
- 2단계. 배열로 묶었을 때, 오로지 숫자만을 걸러내야하기 때문에
.filter()
메서드를 사용하여 0 이상인 요소를 숫자로 판단하고 뽑아낸다.- 3단계. 이 때 걸러진 숫자들 또한 문자열 형태이기 때문에, 이를
parseInt()
로 숫자형으로 변환해 준다.- 4단계. 해당 배열을 새로운 변수값으로 부여하고, 반복문을 통해 정답에 더하는 방식으로 마무리 한다.
function solution(my_string) {
let sum = 0;
for (const ch of my_string) {
if (!isNaN(ch)) sum += +ch;
}
return sum;
}
- 1단계. for of의 경우, 배열 뿐만아니라 문자열 또한 순환할 수 있다는 점을 이용한다.
- 2단계. !isNaN()은 결국, 숫자인 것을 반환하는 조건문이다. 이를 이용하여 숫자들을 정답에 더한다.
Q. 숫자와 "Z"가 공백으로 구분되어 담긴 문자열이 주어집니다. 문자열에 있는 숫자를 차례대로 더하려고 합니다. 이 때 "Z"가 나오면 바로 전에 더했던 숫자를 뺀다는 뜻입니다. 숫자와 "Z"로 이루어진 문자열 s가 주어질 때, 머쓱이가 구한 값을 return 하도록 solution 함수를 완성해보세요.
function solution(s) {
let answer = 0;
let Elements = s.split(" ");
for (let i = 0; i <= Elements.length - 1; i++) {
if (Elements[i] === "Z") {
answer -= parseInt(Elements[i - 1]);
} else {
answer += parseInt(Elements[i]);
}
}
return answer;
}
- 1단계. 본 문제의 매개변수 또한 문자열로 제시되어 있기때문에, 이를
.split(" ")
으로 공백없는 배열로 만든다.- 2단계. 이를 새로운 변수에 선언하고, 반복문으로 돌리되, 요소가 Z면 전의 요소를 빼고, 나머지는 더하는 식을 작성한다.