BOJ C언어 11720 숫자의 합 문제풀이
난이도 : BRONZE2
문제
입력
출력
소스코드
#include <stdio.h>
int main()
{
int testCase;
scanf("%d", &testCase);
char Arr[101] = {};
scanf("%s", Arr);
int i, sum = 0;
for (i = 0;i < testCase; i++) {
sum += Arr[i]-48;
}
printf("%d", sum);
return 0;
}
풀이
BOJ11720 문제 풀이를 위해 알아 두어야 할 점은, char 배열로 입력값을 받은것과, 아스키코드의 개념이다.
char Arr[101] = {};
scanf("%s", Arr);
우선, char형 배열로 입력값을 받은 이유는, scanf 함수가 공백과 띄어쓰기를 구분자로 인식하기 떄문에 공백과 띄어쓰기의 입력없이 수를 받기 위함이다.
for (i = 0;i < testCase; i++) {
sum += Arr[i]-48;
}
다음으로, 우리가 int 형 배열로 숫자를 받은 것이 아니기에, 배열에 저장된 값을 그대로 더해주면, 컴퓨터는 숫자로 인식하지 않고, 문자열로 인식하기에 아스키값이 더해지게 된다.
예를들면 숫자 1을 문자열로 받았다고 치면, 아스키표에 의해 1이 아닌 49의 값이 들어가게 된다.
따라서 입력받은 값에서 48을 빼 줘서 본연의 값이 들어 가도록 설정해 주는 것이다.
11720번: 숫자의 합
첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다.
www.acmicpc.net
'Programming > PS' 카테고리의 다른 글
[BOJ] C언어 2741 N 찍기 (0) | 2020.12.21 |
---|---|
[BOJ] C언어 11721 열 개씩 끊어 출력하기 (0) | 2020.12.21 |
[BOJ] C언어 11718 그대로 출력하기 (0) | 2020.12.19 |
[BOJ] C언어 11022 A+B-8 (0) | 2020.12.19 |
[BOJ] C언어 11021 A+B-7 (0) | 2020.12.19 |
댓글