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 |