한 줄 요약 :
숫자를 문자열로 받아 ascii코드 값을 빼준다.
풀이 :
1. 숫자의 개수 N을 입력받는다.
2. 크기 [101]칸의 문자열에 공백없이 숫자를 입력받는다.
- 숫자의 개수는 (1<=N<=100)이다. - 문자열의 마지막을 구분하는 null 문자를 포함하여 101칸을 만든다.
3. 문자열의 포인터 char* ptr과 숫자의 합을 담을 변수 int sum을 만든다.
- 포인터를 이용해 숫자를 하나씩 분리할 것이다.
4. for문을 이용해 포인터로 문자열을 하나씩 가리킨다.
- ptr[i]를 이용하면 i칸에 해당하는 문자열 숫자를 가리킬 수 있다. - 이것을 int sum에 저장하면 ptr[i]에 해당하는 ascii코드값이 저장된다. - 그런데 숫자에 대한 ascii코드는 숫자와 48이 차이난다. - 따라서 (ptr[i]-48)을 해서 해당 문자열을 정수로 받아낼 수 있다.
5. (ptr[i]-48)을 int sum에 더해주고 출력한다.
#include <iostream>
using namespace std;
int main()
{
int N; //숫자의 개수
cin >> N;
char number[101];
cin >> number; //숫자 N개를 문자열로 받기
char* ptr = number; //숫자에 대한 주소값을 저장 (주소값에 따라 ascii코드를 저장한 후 문자로 변환해서 더하기 위함)
int sum = 0;
for (int i = 0; i < N; i++)
{
sum += ptr[i] - 48; //ascii 코드값을 빼줌
}
cout << sum;
}