티스토리 뷰
숫자의 합
문제
N개의 숫자가 공백 없이 쓰여있다. 이 숫자를 모두 합해서 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다.
출력
입력으로 주어진 숫자 N개의 합을 출력한다.
예제 입력 1
1
1
예제 출력 1
1
예제 입력 2
5
54321
예제 출력 2
15
예제 입력 3
25
7000000000000000000000000
예제 출력 3
7
예제 입력 4
11
10987654321
예제 출력 4
46
해설
첫 번째 코드가 채점을 통과하지 못해서 짜증이 나는 문제다. 처리를 위해서 문자열을 숫자로 변환해 주는 함수인 atoi()
를 이용하여 짜 코드인데 정확힌 출력되는데도 채점을 통과하지 못했다. 이 코드를 이래저래 바꾸어 보아도 틀렸습니다.
나 런타임 에러
라는 결과를 얻을 뿐이다. 아…. 좀 빡쳐. 이 코드에 어디가 문제인지 알려주면 좋겠다!
첩경을 찾지 말라는 의미로 받아들이고 atoi()
를 사용하지 않는 코드를 짰다. 아스키코드에서 문자와 숫자의 차이를 이해하면 간단한 연산을 통해 아라비아 문자를 아라비아 숫자로 변환할 수 있다.
위 표를 보면 아라비아 문자의 십진 코드가 48에서 시작한다. 아라비아 문자 0이 48인 것이다. 즉 문자코드값 48에서 48을 빼면 곧 수 0을 얻을 수 있는 것이다. 그 다음의 아라비아 문자들 역시 48을 빼면 곧 문자가 아닌 수로 변환이 되는 것이다. 이런 성질을 이용하여 문자열로 받은 각 아라비아 문자의 합을 다음의 코드로 구할 수 있다.
for (i = 0; i < times; ++i) {
sum += num[i] - 48;
}
이를 이용하여 소스코드 2를 작성하였고 이 코드는 채점에 통과하였다.
소스코드 1 : C
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int i, times, sum = 0;
char cNum[100];
char *pchar;
scanf("%d", ×);
scanf("%s", cNum);
for (i = 0; i < times; ++i) {
*pchar = cNum[i];
sum += atoi(pchar);
}
printf("%d\n", sum);
return 0;
}
소스코드 2: C
#include <stdio.h>
int main(int argc, char *argv[])
{
int times, i, sum = 0;
char num[100];
scanf("%d", ×);
scanf("%s", num);
for (i = 0; i < times; ++i) {
sum += num[i] - 48;
}
printf("%d\n", sum);
return 0;
}
'Python > 심사문제' 카테고리의 다른 글
백준(BAEKJOON): 문자열반복(2675번) (0) | 2020.03.24 |
---|---|
백준(BAEKJOON): 알파벳 찾기(10809번) (0) | 2020.03.24 |
백준(BAEKJOON): 아스키 코드(11654번) (0) | 2020.03.21 |
백준(BAEKJOON): 한수(1065번) (0) | 2020.03.19 |
백준(BAEKJOON): 셀프 넘버(4673번) (0) | 2020.03.18 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- Tistory
- QtDesigner
- words
- 소수
- tips
- NK
- 백준
- QGridLayout
- baekjoon
- 리찬규
- Mac
- PyQt5
- 유래
- Python
- 북한말
- MacOS
- judge
- BOJ
- word
- python3
- locallibrary
- setText()
- 리규찬
- C
- books
- QLabel
- QLineEdit
- QComboBox
- 어원
- django
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함
11-26 00:00