본문 바로가기

코테/프로그래머스

[코딩 기초 트레이닝] 문자열 정수의 합

728x90

[코딩 기초 트레이닝] 문자열 정수의 합

문제 링크

구분

코딩 테스트 연습 > 코딩 기초 트레이닝

풀이 요약

문자열을 정수형으로 바꾼후 각 자리의 숫자의 합을 더하는 문제

나의 풀이

function solution(num_str) {
    return [...num_str].reduce((acc,cur)=>acc+ Number(cur),0)
}


sepoerator를 사용하여 문자열을 배열로 분해한 후 (ex “12345” ⇒ [ ‘1’ , ‘2’ , ‘3’ , ‘4’ , ‘5’ ] )

reduce 함수를 사용하여 배열의 각 요소의 값을 더해주는데, 현재 누적값 acc에 현재 요소 cur을 숫자로 변환한 값을 더합니다.

초기값은 0으로 설정합니다.

 

문제와 같이 "123456789” 값이 입력값으로 들어온 경우,

acc:0 , cur= ‘1’ , acc+Number(cur) = 0+1 ⇒ 1

acc:1 , cur= ‘2’ , acc+Number(cur) = 1+2 ⇒ 3

acc:3 , cur= ‘3’ , acc+Number(cur) = 3+3 ⇒ 6

acc:6 , cur= ‘4’ , acc+Number(cur) = 6+4 ⇒ 10

acc:10 , cur= ‘5’ , acc+Number(cur) = 10+5 ⇒ 15

acc:15 , cur= ‘6’ , acc+Number(cur) = 15+6 ⇒ 21

acc:21 , cur= ‘7’ , acc+Number(cur) = 21+7 ⇒ 28

acc:28 , cur= ‘8’ , acc+Number(cur) = 28+8 ⇒ 36

acc:36 , cur= ‘9’ , acc+Number(cur) = 36+9 ⇒ 45

으로 계산되어 최종 결과값이 45가 됩니다.

 

배운점

spread 문법인 (…) 의 사용법을 배웠습니다.

spread 문법은 배열이나 객체를 개별 요소로 분해하여 새로운 배열이나 객체를 만들거나 함수 호출 시 인자를 편리하게 전달하는

문법입니다.

 

  1. 배열 분해 (배열을 개별 요소로 분해하여 다른 배열로 복사)
const array1 = [1, 2, 3];
const array2 = [...array1, 4, 5];
console.log(array2); // 출력: [1, 2, 3, 4, 5]

 

 

   2. 객체 분해 (객체를 복사하고 일부 속성을 변경)

const obj1 = { a: 1, b: 2 };
const obj2 = { ...obj1, b: 3, c: 4 };
console.log(obj2); // 출력: { a: 1, b: 3, c: 4 }

 

  3. 함수 인자 ( 배열을 함수의 개별 인자로 전달할 때)

function sum(x, y, z) {
  return x + y + z;
}

const numbers = [1, 2, 3];
console.log(sum(...numbers)); // 출력: 6

 

 

  4. 나머지 인자 (rest)

function myFunction(a, b, ...rest) {
  console.log(a); // 첫 번째 인자
  console.log(b); // 두 번째 인자
  console.log(rest); // 나머지 인자들
}

myFunction(1, 2, 3, 4, 5); // 출력: 1, 2, [3, 4, 5]

 

cf> rest 문법

rest는 spread와 비슷하게 생겼지만 역할이 달라 표로 간단히 정리해 보았습니다.

  Spread Rest
용도 배열을 다른 배열로 복사, 값을 추가하는 용도 여러 개의 함수 인수를 전달하는 경우
사용법 함수 호출에 … 사용 함수 매개변수에 …사용
728x90