알고리즘(C++)/백준 알고리즘
11720번 : 숫자의 합
개발하는꼬물이
2017. 11. 17. 20:34
1. 문제 요약
N개의 숫자가 공백 없이 쓰여있다. 이 숫자를 모두 합해서 출력하는 프로그램을 작성하시오.
첫째 줄에 숫자의 개수 N (1 <= N <= 100), 둘쨰 줄에 숫자 N개가 공백없이 주어진다.
2. 예제 입력
5 54321
3. 예제 출력
15
4. 코드
1) 동적 배열 이용
#include <iostream> using namespace std; int main() { int n; // 숫자의 갯수 cin >> n; char *arr = new char[n + 1]; int total = 0; cin >> arr; for (int i = 0; i < n; i++) { total += arr[i] - 48; // char형으로 받았으므로, 아스키코드 '0'의 값, 48을 빼줌 } cout << total << endl; delete[] arr; return 0; }
2) char 형 변수 이용
#include <iostream> using namespace std; int main() { int n; // 숫자의 갯수 char ch; cin >> n; int total = 0; for (int i = 0; i < n; i++) { cin >> ch; total += ch - 48; // char형으로 받았으므로, 아스키코드 '0'의 값, 48을 빼줌 } cout << total << endl; return 0; }
→ 사실 2)는 왜 되는건지 모르겠다... for문으로 저렇게 입력받으면 한번에 입력된 걸 1자씩 끊어서 인식하는건가?