반응형
11720번: 숫자의 합
첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다.
www.acmicpc.net
문제
N개의 숫자가 공백 없이 쓰여있다. 이 숫자를 모두 합해서 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백 없이 주어진다.
출력
입력으로 주어진 숫자 N개의 합을 출력한다.
#include<stdio.h>
int main()
{
char str[100];
int N;
int result = 0;
scanf_s("%d", &N);
scanf_s("%s", &str);
for (int i = 0;i < N;i++)
{
result = result + (str[i] - '0');
}
printf("%d", result);
return 0;
}
중요 포인트
- 아스키코드 값 활용
- 문자열이 입력되는 방법 파악 필요
해당 문제는 문자열로 입력받은 수에 대해서 각 자리마다 분리하여 합산하고 그 결과를 정수로 출력하는 문제이다.
문자열에 저장되는 방식은 우선 입력이 1100으로 들어왔을 때 차례대로 문자열 각 자리에 들어가게 된다.
str [0] = '1', str [1] = '1', str [2] = '0', str [3] = '0' 이런 식으로 들어가게 된다.
그러나 str 배열의 각 자리는 문자 값이므로 우리가 정수로 변환해서 합산하거나 출력하기 위해서는 아스키코드를 참조해야만 한다.
'1' 은 아스키코드 값에서 49를 나타낸다 즉 '0'을 빼줌으로써 본래의 정수 값을 얻을 수 있게 된다.
'1' - '0' = 49 - 48 = 1
반응형
'프로그래밍 ( Programming ) > 백준 알고리즘 (BaekJoon Algorithm)' 카테고리의 다른 글
2675번 - 문자열 반복 ( 백준 알고리즘/C++ ) (0) | 2020.12.12 |
---|---|
10809번 - 알파벳 찾기 ( 백준 알고리즘/C++ ) (0) | 2020.12.11 |
11653번 - 아스키 코드 ( 백준 알고리즘/C++ ) (0) | 2020.12.09 |
1065번 - 한수 ( 백준 알고리즘/c++ ) (0) | 2020.12.07 |
4673번 - 셀프 넘버 ( 백준 알고리즘 / C++ ) (0) | 2020.12.03 |
댓글