
https://school.programmers.co.kr/learn/courses/30/lessons/120853
문제 설명
숫자와 "Z"가 공백으로 구분되어 담긴 문자열이 주어집니다. 문자열에 있는 숫자를 차례대로 더하려고 합니다. 이 때 "Z"가 나오면 바로 전에 더했던 숫자를 뺀다는 뜻입니다. 숫자와 "Z"로 이루어진 문자열 s가 주어질 때, 머쓱이가 구한 값을 return 하도록 solution 함수를 완성해보세요.
제한사항
입출력 예
| s | result |
|---|---|
| "1 2 Z 3" | 4 |
| "10 20 30 40" | 100 |
| "10 Z 20 Z 1" | 1 |
| "10 Z 20 Z" | 0 |
| "-1 -2 -3 Z" | -3 |
입출력 예 #1
입출력 예 #4, #5
설명 생략
function solution(s){
let nums = s.split(' '); // 문자열을 공백 기준으로 나눠 배열로 저장
let result = 0;
let subtract = 0; // 'Z'가 나온 경우 뺄 값을 저장할 변수
for(let i = 0; i < nums.length; i++){
if(nums[i] === 'Z') {
result -= subtract; // "Z"가 나오면 이 값을 사용하여 이전에 더한 값을 빼주는 것
subtract = 0; // 이전에 뺀 값을 뺀 값을 초기화
} else {
let num = parseInt(nums[i])
result += num; // 숫자로 변환한 것을 더해준다.
subtract = num; // 현재 숫자 subtract에 저장
}
}
return result;
}