1. 틀린 이유 

여러 개의 숫자를 구분할 줄 알아야했다. 배열을 사용하면 될 것같아서 int 배열형으로 이용했지만 그렇게 되면 54321을 입력하면 5, 4, 3 ... 이런식으로 배열이 입력되는 것이 아닌, 배열의 0번째에 54321이라는 숫자가 들어가는 꼴이 되버린다. 

 

 

2. 필요한 개념

아스키 코드를 이용한다면 깔끔하게 코드를 짤 수 있다. char형으로 배열을 받게되면 54321을 입력할 경우 각각 '5', '4', '3' .. 이런식으로 각자 배열을 받을 수 있다. 총합을 계산할 때만 배열이 char형이었므로, 아스키코드 '0'의 값인 48을 빼준다면 숫자 값으로 총합을 더할 수 있게 되는 것이다.

 

▼ 다음은 아스키 코드 표의 일부다.

 

3. 고친 코드 

#include <iostream> 
using namespace std; 
int main(){
    int n; 
    int total=0;
    cin >> n;
    char a[n];
    cin >> a;
    for (int i=0; i<n; i++){
            total+=a[i]-48;
    }
    cout << total;

    return 0; 
}

 

'프로그래밍 언어 💬 > C++' 카테고리의 다른 글

[백준] 2439번, 2440번, 2441번 [별찍기 (1)]  (0) 2020.12.31
문자열을 나타내기 위한 클래스 "string"  (0) 2020.12.30
[백준] 10953번  (0) 2020.12.26
[백준] 10951번  (0) 2020.12.26
C언어 기초-포인터(1)  (0) 2020.10.31