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
'백준 알고리즘 단계별 풀이 (문제 수) > 문자열 (10)' 카테고리의 다른 글
[C++] 단어의 갯수 : 1152번 (0) | 2022.07.03 |
---|---|
[C++] 단어 공부(가장 많은 알파벳 찾기) : 1157번 (0) | 2022.07.02 |
[C++] 문자열 반복 / 단어 재조합하기 : 2675번 (0) | 2022.06.28 |
[C++] 알파벳 찾기 : 10809번 (0) | 2022.06.26 |
[C++] 아스키코드 : 11654번 (0) | 2022.06.26 |