백준 11720번: 숫자의 합 / C++ 문제풀이

Been·2023년 11월 10일
0

백준

목록 보기
10/23

한 줄 요약 :

문자열로 숫자열을 입력받고 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;
}
profile
콧콧코코콧코콧ㅅ

0개의 댓글