728x90
문제
정수 n이 매개변수로 주어질 때 n의 각 자리 숫자의 합을 return하도록 solution 함수를 완성해주세요
해결 과정
function solution(n) {
let answer = 0;
let numToString = n.toString().split('');
for(i of numToString) {
answer += Number(i);
}
return answer;
}
n.toString()을 이용하여 숫자를 문자열로 바꿨다. 이후 .split()을 이용하여 문자열을 문자 배열로 나눴다.
만일 "123"일 경우, ['1', '2', '3']으로 변환된다.
새롭게 알게된 점 (궁금증)
for of로 접근하기 전에 기본 for문을 이용해서 풀었더니 2번째 테스트코드에서 오류가 발생했다.
for (let i = 0; i < numToString.length; i++) {
answer += Number(i);
}
오류가 났던 그 이유는 i가 배열요소가 아닌 배열의 인덱스로 사용되었기 때문이다. 따라서 Number(i)는 배열 요소가 아닌 인뎃그 값(0, 1, 2, 3...)를 숫자로 변환하기 때문이다.
그래서 만약 위와 같이 기본 문자열로 사용하고 싶으면
for (let i = 0; i < numToString.length; i++) {
answer += Number(numToString[i]);
}
이렇게 사용해야했다.
for of: 배열의 각 요소를 순회( 배열, 문자열, Set, Map 등 이터러블 객체에서 각 요소를 순회할 때 사용) | 기본 for문: 배열의 인덱스를 순회 |
- 간결하고, 요소를 직접 다룰 때 유용 - 인덱스가 필요하지 않을때 적합 |
- 요소에 접근하려면 arr[i]처럼 인덱스를 명시적으로 사용 - 인덱스를 기반으로 한 작업이 필요할 때 적합 |
728x90
'⌨️ 프로그래머스 > 코딩테스트 입문' 카테고리의 다른 글
[프로그래머스] 문자열 정렬하기(2) | JS (0) | 2025.01.31 |
---|---|
[프로그래머스] 세균 증식 | JS (2) | 2025.01.31 |
[프로그래머스] 한 번만 등장한 문자 | JS (0) | 2024.09.04 |
[프로그래머스] 가장 큰 수 찾기 | JS (0) | 2024.08.21 |
[프로그래머스] 문자열안에 문자열 | JS (0) | 2024.08.21 |