한 줄 요약 :
문자열로 숫자열을 입력받고 ascii코드를 빼주어 정수로 변환한다.
풀이 :
1. 숫자의 개수 N을 입력받는다.
2. 숫자 N개를 문자열 char number[101]로 입력받는다.
- 문제에서 숫자의 개수는 (1<=N<=100)이라고 하였다. - 문자열의 마지막을 구분짓는 null문자를 포함해 크기를 [101]칸으로 만든다.
3. 문자열에 대한 포인터와 숫자의 합을 넣을 정수를 만든다.
- char* ptr = number; // 문자열에 대한 주소값을 저장한다. - int sum = 0; // 숫자의 합을 넣을 정수 변수를 만들어놓는다.
4. for문을 이용해 N개만큼의 숫자를 sum에 넣는다.
- 이 때 ptr[i]를 정수에 넣으면 숫자에 대한 ascii코드가 정수로 들어간다. - 그런데 ascii 코드와 실제 입력된 숫자의 차이는 48이다. - 따라서 (ptr[i]-48)을 해주어 실제 입력된 숫자를 구하여 넣는다.
<C++ code>
#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;
}