본문 바로가기
C C++/C C++ 백준

C언어 백준 11720번 숫자의 합

by Go! Jake 2022. 5. 18.

문제

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

문제풀이

#include <stdio.h>


int main(void)
{
	int n;
	scanf("%d",&n);
	int sum = 0;
	char arr[n];
	scanf("%s",arr);
	int i;
	
	for (i=0;i<n;i++)
	{
		sum+=arr[i]-'0';
	}
	printf("%d",sum);
	
	return 0;
}

- char 문자열 배열을 입력 받아 값을 저장하고 인덱스별 저장된 값을 모두 더합니다. 연속된 값 1234가 입력되는 경우 1,2,3,4 나누어 입력받기 위해서입니다.

- 그렇다면 이 문자열을 연산에 사용할 수 있을까요? 정답은 할 수 있다입니다. 다만 ascii를 이용하여야 합니다.

- char형 문자에서 숫자는 ascii 값을 가집니다.

예를 들어 char형 변수 a가 0이 입력된다면 이는 ascii 코드의 0을 의미하며 정수로는 48이라는 값을 가집니다.

- 연산 시 sum+=arr[i]-'0';와 같은 식을 사용하였습니다. 이렇게 계산한다면 arr[i], 즉 인덱스별 배열에 들어간 ascii에서 ascii 0값을 빼면 두 값의 차이를 구할 수 있습니다. 0이 기준이므로 우리는 실제 배열에 저장된 값을 정수형처럼 사용할 수 있게 된 것입니다.

 

댓글