문제
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이 기준이므로 우리는 실제 배열에 저장된 값을 정수형처럼 사용할 수 있게 된 것입니다.
'C C++ > C C++ 백준' 카테고리의 다른 글
C언어 백준 2741번 N 찍기 (0) | 2022.05.21 |
---|---|
C언어 백준 11721번 열 개씩 끊어 출력하기 (0) | 2022.05.20 |
C언어 백준 11719번 그대로 출력하기 2 (0) | 2022.05.18 |
C언어 백준 11718번 그대로 출력하기 (0) | 2022.05.18 |
C언어 백준 10953번 A+B - 6 (0) | 2022.05.05 |
댓글