이번 문제는 백준 11720 숫자의 합 C++ 입니다.
풀이
이문제는 정말 간단 합니다.
우선 코드를 보고 설명 드릴께요
#include <iostream>
#include <string>
using namespace std;
int converter(char a) {
return a - '0';
}
int main() {
int n;
int sum = 0;
string strings;
cin >> n >> strings;
for (int i = 0; i < n; i++) {
sum += converter(strings.at(i));
}
cout << sum;
return 0;
}
위 코드에서 string 으로 한번에 받아버렸는데요
문제에서 숫자가 100자까지로 제한 되어있기에 큰 문제가 없습니다.
(사실 정상적인 테스트환경이라면 읽다가 타임오버 날 정도 아닌 길이라면 string 으로 모두 받을 수 있습니다. string 이 얼만큼의 길이를 담을 수 있는지는 남은 메모리에 따라 달라지겠지만, 테스트 해본 사람들이 몇몇 있으니 한번 검색 해서 참고해 보시는거도 도움 될 겁니다. )
string 에서 특정 자리수의 문자를 받아오는건 string.at(x) <- string 문자열의 x 번째 자리를 반환 하게 됩니다.
그리고 받은 문자열을 converter 라는 함수를 만들어 해당 문자열에서 ‘0’ 을 빼게 만들었는데요
이렇게 하는 이유는 아스키코드를 사용 하기 때문입니다.
ex ) 0 의 아스키코드 -> x 라면 1의 아스키코드는 x+1 입니다. 이런식으로 숫자의 아스키코드를 외우지 않아도
간단하게 나타 낼 수 있습니다.
(변형하면 a~z 를 -‘a’ 를 통해서 a는 0으로 b는 1로 나타 낼 수 있습니다. )
오늘은 어린이 날이네요. 모두 즐거운하루