프로그래머스 4-1 TIL

Seunggyu Jung·2023년 4월 2일
0
post-thumbnail

Day 12 3/4 : 숨어있는 숫자의 덧셈(1)

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()은 결국, 숫자인 것을 반환하는 조건문이다. 이를 이용하여 숫자들을 정답에 더한다.

Day 13 1/4 : 컨트롤 제트

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면 전의 요소를 빼고, 나머지는 더하는 식을 작성한다.

마무리

  • for of 반복문은 생긴지 얼마 되지 않아서 사용을 지양한다고 하지만, 배우는 사람의 입장에서는 미리 익혀두는 것이 더 좋을 것이라고 생각한다.
profile
감동을 주고픈 개발자(준비생)

0개의 댓글