1. 문제
자연수 N을 매개변수로 받아, N의 각 자릿수의 합을 구해서 return 하는 함수를 만드시오.
예를들어 N = 123이면 1 + 2 + 3 = 6을 return 한다.
2. 제한
N의 범위 : 100,000,000 이하의 자연수
3. 정답
public class Solution {
public int solution(int n) {
int answer = 0;
int length = (int)(Math.log10(n)+1);
for (int i = 0; i < length; i++) {
answer += (n % 10);
n /= 10;
}
return answer;
}
}
4. 설명
4-1. Math.log10()을 통해 입력받은 자연수 n에 로그값을 씌워서 나온 값에 1을 더하고 int형변환을 해주면 n의 자릿수가 나온다. 예를 들어 Math.log10(1000)은 3이고 여기에 1을 더하면 4가 나와 자릿수를 구할 수 있다.
4-2. for문을 자연수 n의 자릿수만큼 돌리면서 n을 10으로 나눴을 때의 나머지 부분이 n의 일의자리 값과 같다라는 점을 이용하여 n을 10으로 계속 나눠주면서 일의자리 값을 계속 떼어내어 answer에 더해준다.
4-3. 예를 들어 n이 123이면 123 % 10 = 3을 answer += 3하고 n은 123 / 10 = 12로 바꿔준다. 이걸 반복하는 것이다.
4-4. 자릿수를 다 더한 answer값을 return한다.
'알고리즘 > 프로그래머스' 카테고리의 다른 글
정수 내림차순으로 배치하기(JAVA) (0) | 2022.01.19 |
---|---|
자연수 뒤집어 배열로 만들기(JAVA) (0) | 2022.01.18 |
이상한 문자 만들기(JAVA) (0) | 2022.01.18 |
완주하지 못한 선수(JAVA) (0) | 2022.01.18 |
수박수박수박수박수박수?(JAVA) (0) | 2022.01.18 |