[伯俊]1720号数字の和


https://www.acmicpc.net/problem/11720

C++プール


1.stringのat()関数または[]演算子

#include <iostream>
#include <string>
using namespace std;

int main()
{
	int n;
	cin >> n; // 숫자의 개수

	string str;
	cin >> str; // 문자열로 입력 받기

	int sum = 0;
	for (int i = 0; i < n; i++) { // n개까지만 더하기
		sum += str.at(i) - 48; // at() 함수는 인덱스 범위 체크하지만, 속도 느림.
		//sum += str[i] - 48; // [] 연산자는 인덱스 범위 체크하지 않지만, 속도 빠름.
	}

	cout << sum;

	return 0;
}
  • str.at()文字列の範囲外のインデックスにアクセスするために入力された範囲をチェックすると、範囲外の例外が発生します.
  • str[]範囲チェックはありません.範囲外のインデックスにアクセスできますが、動作が定義されておらず、どの値が含まれているかはわかりません.
  • 2.コークス配列

    #include <iostream>
    using namespace std;
    
    int main()
    {
    	int n;
    	cin >> n;
    
    	char* arr = new char[n];
    
    	int sum = 0;
    	for (int i = 0; i < n; i++) {
    		// char형은 딱 한 문자씩만 입력 받는다!
    		cin >> arr[i];
    		sum += arr[i] - 48; // char형 '0' == 십진수 48
    	}
    
    	cout << sum;
    
    	delete[] arr;
    
    	return 0;
    }

    草を切る


    https://ooyoung.tistory.com/67
    https://velog.io/@kchs 94/Python-11720数字の和

    1.map関数の使用

    n = input()
    print(sum(map(int,input())))
    # map 함수를 이용해 각 자리의 문자를 int로 변환하고, 전부 더하기
    # 그런데 이 방법은 입력값 n을 사용하지 않기 때문에
    # 더하는 숫자의 개수가 n개가 아닐 수 있다.

    2. for ch in string

    n = input()
    string = input()
    sum = 0
    for ch in string:
        sum += int(ch) # 문자를 정수로 변환해서 더하기
    print(sum)
    # 이 방법도 입력값 n을 사용하지 않기 때문에 더하는 숫자의 개수가 n개가 아닐 수 있다.

    3. for i in range(n)

    n = int(input()) # range 함수의 인자로 쓰일 n은 숫자여야 함. (int로 변환 필수)
    string = input()
    sum = 0
    for i in range(n): # 0부터 n-1까지
        sum += int(string[i]) # 문자를 정수로 변환해서 더하기
    print(sum)