728x90
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int a, sum = 0;
scanf_s("%d", &a);
char* num = (char*)malloc(sizeof(char) * a);
for (int i=a; i >= 0; i--) {
scanf_s("%c", &num[i]);
}
for (int i = a - 1; i >= 0; i--) {
sum += (int)num[i] - 48;
}
printf("%d", sum);
}
이 문제는 솔직히 100%이해를 하지 못했다.
일단 아는데까지 정래해보다 보면 무언가 알게되겠지
일단 숫자 입력받는 것은 쉬우니까
그리고 메모리 할당을 해주더라??
문자열로 변환시켜서 배열넣어서 그런듯
그 다음에는 거꾸로 배열을 저장시키던데...
이 이유는 모르겠지만 반대로 하면 다른 값이 나온다.
그러므로 거꾸로 할 수 밖에 없을 것 같고....
배열로 저장해야 차례대로 더해주기가 쉬우니까
그리고 a-1을 해서 다시 for문이 들어간다.
이유는 모르겠지만 같이 a-1을 하면 -24가 나오니
똑바로 나오기 위해 그런듯??
그리고 sum해주면서 -48을 한다.
문자열인 아스키코드는 기존 숫자에 +48을 해주니
정수형을 위해 빼주는 것으로 보인다.
그리고 합을 출력하면된다.
다시 한번 풀어봐야 할 것 같다.
몇가지 이해 안 되는 부분이 존재한다.
https://www.acmicpc.net/problem/11720
728x90
'C language > Baekjoon' 카테고리의 다른 글
[C] 백준 10178번 풀이: 할로윈의 사탕 (0) | 2021.07.27 |
---|---|
[C] 백준 2445번 풀이: 별찍기 -8 (0) | 2021.07.26 |
[C] 백준 11654번 풀이: 아스키 코드 (0) | 2021.07.05 |
[C] 백준 1065번 풀이: 한수 (0) | 2021.07.03 |
[C] 백준 4673번 풀이: 셀프넘버 (0) | 2021.07.03 |