문제 설명
자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return하는 solution 함수를 만들어 주세요.
예를들어 N = 123이면 1 + 2 + 3 = 6을 return하면 됩니다.
제한사항
● N의 범위 : 100,000,000 이하의 자연수
입출력 예
N | answer |
123 | 6 |
987 | 24 |
입출력 예 설명
입출력 예#1
문제의 예시와 같습니다
입출력 예#2
9 + 8 + 7 = 24이므로 24를 return하면 됩니다.
프로토 타입
1 2 3 4 5 6 7 8 9 10 | using namespace std; int solution(int n){ int answer=0; return answer; } |
해설
EX) 입력 값이 123일 때
일의 자리수 구하는법
123%10 = 3
123의 1의 자리수는 3
십의 자리수 구하는법
123/10=12
//나머지 값은 소거됨
12%10=2
백의 자리수 구하는법
123/100 = 1
//나머지 소거
위 내용을 코드화 하면
1 2 3 4 5 6 7 8 9 10 | using namespace std; int solution(int n){ int answer=0; while(n<=0){ answer+=n%10; n=/10; } return answer; } |
EX를 적용하면,
while Loop | n | answer |
1 | 123 | 3 |
2 | 12 | 3+2=5 |
3 | 1 | 3+2+1=6 |
4 | 0 //while(n<=0) | ∴ answer = 6 |
루프의 과정에서,
n의 값은 %연산자를 사용하여 일의자리수의 값만 구하고, answer라는 값에 계속되어 합산됩니다.
루프를 제어 할 수 있는 Key 값은 n이 되는데,
n은 /연산자에 의해 나머지 값을 버리며 10으로 나누어 지면서 다음 자리수의 값을 1의 자리수로 바꾸어 줍니다.
마지막으로, n이 일의 자리수 일 때, n이 10이란 수로 나누어지게 되고, n은 0이 됩니다.
0이 되면서 while(n<=0)의 조건문을 escape하고, answer의 값을 반환합니다.