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

Been·2023년 11월 10일
0

백준

목록 보기
9/23

한 줄 요약 :

숫자를 문자열로 받아 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;
}
profile
콧콧코코콧코콧ㅅ

0개의 댓글