본문 바로가기

Computer engineering/Algorithm

[Algorithm]2018 1ST KAKAO BLIND RECRUITMENT 1번 문제 해설

문제 설명


자연수 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;

}
























  cs







해설

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의 값을 반환합니다.