일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- php 프로그래밍 입문 3판
- SWEA
- php 프로그래밍 입문
- 한정 분기
- php 프로그래밍 입문 문제풀이
- 페이코 초대코드
- spring
- C언어
- php 프로그래밍 입문 솔루션
- php 프로그래밍 입문 연습문제
- 최단 경로
- 파이썬
- 자바
- php 프로그래밍 입문 예제
- Flutter
- 배열
- 페이코 친구코드
- 페이코 추천인
- Java
- php
- 플러터 개발환경 설정
- 자바 스프링
- php 프로그래밍
- C
- 플러터
- programmers
- 스프링
- 백준
- JAVA SPRING
- 페이코 추천인코드
- Today
- Total
ImJay
[C언어] 백준 11720번 : 숫자의 합 본문
백준 11720번 : 숫자의 합
- 사용언어 : C언어
1. 문제
N개의 숫자가 공백 없이 쓰여있다. 이 숫자를 모두 합해서 출력하는 프로그램을 작성하시오.
2. 코드
#include <stdio.h>
int main(void) {
int n, sum=0;
scanf("%d", &n);
char num[n];
scanf("%s", num);
for(int i=0; i<n; i++) sum += num[i] - '0';
printf("%d", sum);
}
3. 풀이
문자열은 배열을 통해 받습니다.
%s를 사용하고, for문을 안써도 됩니다. &도 붙지 않구요.
자세한 내용은 blog.naver.com/1stwook/30178894184
코드 작성시 드는 의문은, 분명 숫자를 입력 받았어도, 형식은 문자열인데
문자열끼리 사칙연산이 가능할까?
답은 가능하다.
우리가 앞에서 아스키코드를 배운 이유가 벌써부터 여기서 설명된다.
예를 들어보자.
우리가 입력을 12를 받았다.
우리가 원하는 출력은 3 (1+2) 이다.
문자열 1은 아스키코드로 49이다.
문자열 2는 아스키코드로 50이다.
다시 말해, 문자열 1과 2는 %s로 출력하면 1,2 이고, %d로 출력하면 49, 50이다.
즉, 우리가 이 것을 정수형으로 계산한다면
문자열 1 + 문자열 2 = 49 + 50 = 99 이다.
그렇다면 우리가 원하는 출력을 위해선?
문자열 0으로 빼주면 된다.
문자열 0의 아스키코드는 48이다.
for(int i=0; i<n; i++) sum += num[i] - '0';
* '0' -> 문자열 0의 표현
num[i]에서 문자열 0을 빼준다의 의미는,
만약 num[0]이 문자열 1이라면 num[0]은 49이고,
여기서 문자열 0을 빼주면 49 - 48 = 1
우리가 원하는 값으로 출력할 수 있다.
우리가 원하는 문자열 1 더하기 문자열 2는
( 49 - 48 ) + ( 50 - 48 ) = 3
아스키코드는 이런식으로 활용할 수 있다.
'백준 - C, C++ > 07. 문자열' 카테고리의 다른 글
[C언어] 백준 1152번 : 단어의 개수 (0) | 2020.10.21 |
---|---|
[C언어] 백준 1157번 : 단어 공부 (0) | 2020.10.20 |
[C언어] 백준 2675번 : 문자열 반복 (10) | 2020.10.17 |
[C언어] 백준 10809번 : 알파벳 찾기 (0) | 2020.10.15 |
[C언어] 백준 11654번 : 아스키 코드 (0) | 2020.10.12 |