본문 바로가기
백준 알고리즘 단계별 풀이 (문제 수)/문자열 (10)

[C++] 문자형 숫자의 합 : 11720번

by 17번 일개미 2022. 6. 26.
728x90

문제

N개의 숫자가 공백 없이 쓰여있다. 이 숫자를 모두 합해서 출력하는 프로그램을 작성하시오.


풀이

#include <iostream>
using namespace std;

int main()
{
	char* numbers; // 숫자 문자열
	int count; // 최대 길이
	int result = 0; // 결과값

	cin >> count; // 최대 길이 입력
	cin.ignore();
	
	numbers = new char[count]; // 메모리 할당
	cin >> numbers;
	// 문자 1 = 49 문자 0 = 48
	// 따라서 문자형 숫자를 정수형으로 바꾸기 위해선 '0'을 뺀다.
	for (int i = 0; i < count; i++)
	{
		result += (numbers[i] - '0');
	}
	cout << result;
	delete[] numbers;
}

1. 문자열을 저장할 공간을 만들기 위해 최대 길이를 입력받는다.

2. 최대길이만큼 char 배열을 동적할당해준다.

3. 문자 '1' 은 아스키코드로 49의 값을 가지고, 문자 '0' 은 48의 값을 가진다.

4. 따라서 정수형 값을 얻기 위해서는 문자형 '어떤숫자'에서 문자형 '0'을 빼주거나, 정수 48을 빼주면 된다.

5. 결과값을 더해서 출력

728x90