반응형
문제: 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 |