[코딩 기초 트레이닝] 문자열 정수의 합
구분
코딩 테스트 연습 > 코딩 기초 트레이닝
풀이 요약
문자열을 정수형으로 바꾼후 각 자리의 숫자의 합을 더하는 문제
나의 풀이
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 문법은 배열이나 객체를 개별 요소로 분해하여 새로운 배열이나 객체를 만들거나 함수 호출 시 인자를 편리하게 전달하는
문법입니다.
- 배열 분해 (배열을 개별 요소로 분해하여 다른 배열로 복사)
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 | |
용도 | 배열을 다른 배열로 복사, 값을 추가하는 용도 | 여러 개의 함수 인수를 전달하는 경우 |
사용법 | 함수 호출에 … 사용 | 함수 매개변수에 …사용 |
'코테 > 프로그래머스' 카테고리의 다른 글
[코딩 기초 트레이닝] 뒤에서 5등 위로 (0) | 2024.07.09 |
---|---|
[코딩 기초 트레이닝] 정수 부분 (0) | 2024.07.09 |
[코딩 기초 트레이닝] 문자열을 정수로 변환하기 (0) | 2024.07.09 |
[코딩 기초 트레이닝] 문자열로 변환 (0) | 2024.07.09 |
[코딩 기초 트레이닝] 부분 문자열인지 확인하기 (0) | 2024.07.09 |