개발 지식/알고리즘

[백준] 11720 숫자의 합

트리맨스 2019. 6. 15. 13:07
반응형


문제: N개의 숫자가 공백 없이 쓰여있고, 이 숫자를 모두 합해서 출력하는 프로그램을 작성한다.


주어진 것 : 첫째 줄에 숫자의 개수 N 이 주어지고, 둘째 줄에 숫자 N개가 공백없이 주어진다. 그리고 숫자 N 개의 합을 출력하자.


언뜻 듣기에는 간단해 보인다. 주어진 숫자를 모두 더하면 되는 것 같다. 하지만 C 언어 에서는 문자열 처리가 다른 언어에 비해 약간 까다롭기 때문에, 만만히 보면 안된다.

나는 getchar 함수를 이용하여 숫자를 각각의 자릿수대로 받게 하였다. scanf 함수는 숫자를 한번에 다 받아버린다. 하지만 getchar는 각 자릿수를 따로 받기 때문에 이 문제에 적합한 함수이다.

예) 100을 입력 

scanf 는 100을 받지만, getchar 는 1만 받는다. getchar 를 3번 반복하게 되면 각 변수에 1,0,0 이 저장이 된다.


또 주의할 점은 getchar는 말 그대로 숫자가 아니라 문자 형태(아스키 코드)로 받기 때문에, -48을 해 주어야지 우리가 원하는 값이 나온다. 

예) 문자 0 은 아스키 코드값 : 48, 48을 빼주면 0이 되므로 원하는 계산 가능


그 이후에, 모든 숫자를 더하고 출력하면 답이 나온다.

이러한 원리를 바탕으로 코드를 짜 보았다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include<stdio.h>
 
int main()
{
    int array[100];
    int input,i,sum;
    sum=0;
    
    scanf("%d",&input);
    getchar();
    for(i=0;i<input;i++)
    {
        sum=sum+(getchar()-48);
    }
    
    printf("%d",sum);
    
}
cs



이 글이 유용하셨다면 공감 한번만 부탁드립니다.

작성자에게 큰 힘이 됩니다.

반응형

'개발 지식 > 알고리즘' 카테고리의 다른 글

[백준] 2884 알람 시계  (0) 2019.06.30
[백준] 4673 셀프 넘버  (0) 2019.06.30
[백준] 9095 1,2,3 더하기  (0) 2019.06.06
[백준] 1463 1로 만들기  (0) 2019.05.27
[백준] 14786 Ax+Bsin(x)=C (2)  (8) 2019.05.24