❓ 문제
💡 해결하기
입력되는 숫자를 type() 함수를 통해 알아본 결과 int형이었다.
자릿수를 더한 값을 구하는 방법에는 다음과 같은 방법이 있다.
1️⃣ 숫자를 문자열로 바꾸어 그 요소를 하나씩 더하기
숫자는 각 자리수로 분해가 불가하지만 문자열의 경우 가능하다. 따라서 숫자를 문자열로 바꾼 뒤 요소 하나하나를 탐색하여 더하면 된다. 물론, 더할 때에는 다시 int형으로 바꾸어 주어야 한다.
📌 Python
def solution(number):
answer = 0
for s in str(number):
answer += int(s)
return answer
또는 다음과 같이 map() 함수와 sum() 함수를 이용하여 간단하게 처리할 수 있다.
def solution(number):
return sum(map(int, str(number)))
📌 Javascript
function solution(n) {
let answer = 0;
for (s of String(n)) {
answer += parseInt(s);
}
return answer;
}
JS에서는 배열의 요소의 값들을 누적할 수 있는 reduce() 메서드가 있으므로 이것을 사용해도 된다.
function solution(n) {
return (n + "").split("").reduce((acc, curr) => acc + parseInt(curr), 0);
}
1. JS에서는 더하기 연산을 할 때 피연산자 중 문자가 하나라도 있으면 계산 결과가 문자열끼리의 덧셈 결과가 된다. 따라서 n + ""의 결과는 n을 문자열로 변환한 것이 된다.
2. split("") 메서드를 사용하면 문자열 n의 요소를 문자 하나씩으로 분해한 결과가 담긴 리스트가 생성된다.
3. 그 리스트에 reduce 메서드를 적용하였는데, 초깃값이 0인 acc 변수에 리스트 요소 하나하나에 해당하는 curr 변수를 int 형으로 변환한 값을 누적한다.
4. 결과적으로는 리스트의 모든 값이 더해진 acc의 값이 반환되게 된다.
2️⃣ 나눗셈과 재귀를 이용하기
어떠한 수를 10으로 나눈 나머지는 맨 끝 자리의 수(일의 자리의 수)임을 이용한다.
number를 10으로 나눈 몫으로 계속 업데이트하면서 number를 10으로 나눈 나머지를 누적해나가면 된다.
number 10보다 작아지면 값이 반환되게 한다.
📌 python
def sum_digit(number):
if number < 10:
return number
return number%10 + sum_digit(number//10)
'코딩 테스트 연습 > 프로그래머스 level 1' 카테고리의 다른 글
[프로그래머스] lv1. 문자열 내 p와 y의 개수 (JS) (0) | 2023.07.06 |
---|---|
[프로그래머스] lv1. 나머지가 1이 되는 수 찾기 (JS) (0) | 2023.07.01 |
[프로그래머스] lv1. 평균 구하기 (2) | 2023.04.25 |
[프로그래머스] lv1. 약수의 합 (0) | 2023.04.25 |
[프로그래머스] lv1. 짝수와 홀수 (0) | 2023.04.20 |
댓글