티스토리 뷰

https://school.programmers.co.kr/learn/courses/30/lessons/120853

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 


 

function solution(s) {
    const arr = s.split(" ")

    let answer = 0
    for(let i = 0; i < arr.length; i++) {
        if(arr[i + 1] === "Z" || arr[i] === "Z") continue
        answer += Number(arr[i])
    }

    return answer
}

 

pop()과 reduce 활용

function solution(s) {
    const stack = []
    s.split(" ").forEach(v => {
        if(v === "Z") stack.pop()
        else stack.push(Number(v)) 
    })

    return stack.length
        ? stack.reduce((acc, cur) => acc + cur)
        : 0
}
  1. 나중에 안에 있는 요소들을 모두 더해줄 빈 배열 stack 을 만듦
  2. split(" ")을 활용해 띄어쓰기를 기준으로 주어진 s를 array로 만듦
  3. 배열 순회
    1. "Z"가 아닐 경우 stack에 숫자 push
    2. "Z"일 경우 stack의 마지막 숫자를 제거 (pop 이용)
  4. reduce는 배열의 길이가 0이면 다음과 같은 에러가 뜸
    Reduce of empty array with no initial value
    1. stack의 길이가 0이 아닐 경우 reduce()를 이용해 모든 요소를 더하여 반환
    2. stack의 길이가 0일 경우 0을 반환

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2026/01   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함