코딩/백준

[백준][C] 11720. 숫자의 합

rivermoon 2022. 10. 2. 21:27

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

 

첫째 줄에 숫자의 개수, 둘재 줄에 숫자 n개가 공백없이 주어집니다.

숫자 하나하나씩 더하여 합을 출력하면 됩니다.

 

예제 입력

11
10987654321

예제 출력

46

해결 방법

형변환과 문자 배열을 이용하여 해결하면 됩니다.

문자 배열 num에 10987654321을 집어 넣은 후, num[0]을 불러오면, 이는 문자이지만 (int) num[0]처럼 int로 형변환을

해주면 계산할 수 있는 정수로 바뀌게 됩니다. 다만 주의해야 하는 부분이 있는데 (int) num[0]으로 정수로 변환을

해준다고 하더라도 이 값은 1이 아닙니다. 아스키코드에서 1을 가리키는 값인 49가 값이 되는데,

아스키코드 0~9

 

48부터 57까지 숫자 0~9의 아스키코드가 모여 있으므로 (int)num[i] - 48으로 48을 빼줌으로써 우리가 원하는 숫자를

뽑아낼 수 있습니다.

코드

#include <stdio.h>
int main()
{
	int n, sum=0; // 변수 초기화를 잊지 맙시다.
	char num[100];
	scanf("%d", &n); // 첫 번째 줄에는 숫자의 개수를,
	scanf("%s", num);  // 두 번째 줄에는 숫자가 공백없이 주어집니다.
	
	for (int i = 0; i < n; i++){
		sum += ((int)num[i] - 48);
	} 
	printf("%d", sum);
}

'코딩 > 백준' 카테고리의 다른 글

[백준][C] 2675. 문자열 반복  (0) 2022.10.03
[백준][C] 10809. 알파벳 찾기  (1) 2022.10.02
[백준][C] 11654. 아스키 코드  (0) 2022.10.02
[백준][C] 4344. 평균은 넘겠지  (0) 2022.10.02
[백준][C] 8958. OX퀴즈  (0) 2022.10.02