11720번 - 숫자의 합 ( 백준 알고리즘/C )

상세 컨텐츠

본문 제목

11720번 - 숫자의 합 ( 백준 알고리즘/C )

본문

 

11720번: 숫자의 합

첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다.

www.acmicpc.net

문제 

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

 

입력 

첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백 없이 주어진다.

 

출력

입력으로 주어진 숫자 N개의 합을 출력한다.


#include<stdio.h>
int main()
{
	char str[100];
	int N;
	int result = 0;
	scanf_s("%d", &N);
	scanf_s("%s", &str);
	for (int i = 0;i < N;i++)
	{
		result = result + (str[i] - '0');
	}
	printf("%d", result);

	return 0;
}
중요 포인트 

- 아스키코드 값 활용
- 문자열이 입력되는 방법 파악 필요 

해당 문제는 문자열로 입력받은 수에 대해서 각 자리마다 분리하여 합산하고 그 결과를 정수로 출력하는 문제이다. 

문자열에 저장되는 방식은 우선 입력이 1100으로 들어왔을 때 차례대로 문자열 각 자리에 들어가게 된다.
str [0] = '1', str [1] = '1', str [2] = '0', str [3] = '0' 이런 식으로 들어가게 된다.  
그러나 str 배열의 각 자리는 문자 값이므로 우리가 정수로 변환해서 합산하거나 출력하기 위해서는 아스키코드를 참조해야만 한다.

 '1' 은 아스키코드 값에서 49를 나타낸다 즉 '0'을 빼줌으로써 본래의 정수 값을 얻을 수 있게 된다.
'1' - '0' = 49 - 48 = 1 

728x90
반응형

관련글 더보기

댓글 영역