[TIL] 230825

CodeBee_·2023년 8월 25일

TIL

목록 보기
4/6

20230825 금요일

스트레칭을 생활화 해야 할 것 같다.
의자에서 일어나다 허리가 삐었다...
병원비 246,000원 😇


오늘 풀어본 문제
https://school.programmers.co.kr/learn/courses/30/lessons/120906

자리수 더하기

입출력 예 #1
1 + 2 + 3 + 4 = 10을 return합니다.
입출력 예 #2
9 + 3 + 0 + 2 + 1 + 1 = 16을 return합니다.


나의 풀이

function solution(n) {
    if (n < 0 || !Number.isInteger(n)) {
        return "양수를 입력하세요";
    }

    let sum = 0;

    // n을 문자열로 변환하여 자릿수를 반복
    const numStr = n.toString();

    // digit에 numStr[i]를 정수로 변환해 할당
    for (let i = 0; i < numStr.length; i++) {
        const digit = parseInt(numStr[i]);
        sum += digit;
    }

    return sum;
}

다른사람의 풀이

function solution(n){
   return String(n).split('').reduce((acc, cur) => acc + cur * 1, 0);

}
// 1. n을 String을 이용해 문자열로 변환 
// 2. split('')을 이용해 개별 문자 배열로 분할
// 3. 'reduce'는 배열의 각 요소를 반복적으로 처리하고 최종 결과를 누적하는 데 사용
// acc 는 초기값 0 으로 설정 되고 cur은 현재 처리중인 요소이며 한 자리 숫자를 문자열로 나타냄.
//acc + cur * 1은 누산기와 현재 숫자의 합을 계산하고 * 1을 사용하여 문자열의 cur를 숫자 값으로 변환

다른사람이 푼 문제풀이를 보고 주석을 달아보았다.


오늘 배운것

  1. 처음에 for문으로 풀어보고 싶어서 for문을 시도했는데 생각처럼 안되었다.
    자릿수를 찾아 더해주는 것이기 때문에 문자열로 변환 한 후 더해주어야 했다.
    자릿수를 더할때는 문자열로 변환 후 답을 구해야 하는 것을 기억하자.

  2. 문자열에 *1을 해서 문자열을 숫자로 변경할 수 있다는 것을 알게 되었다.

profile
엉금엉금 공부 블로그

0개의 댓글