함수를 끝내고 문자열로 들어갔다. 이번 문제는 숫자의 합 구하기.

<숫자의 합>
N개의 숫자가 공백 없이 쓰여있다. 이 숫자를 모두 합해서 출력하는 프로그램을 작성하시오. (1<=N<=100)
이므로.. 100째자리 수까지 담을 수 있어야 한다.
처음 이문제 보고 이게 왜 문자열이지 하고 long long에 담아 풀었는데 자꾸 틀렸다고 해서.. 영상을 찾아보고 터득함.
아스키코드 표가 있으면 쉽게 풀 수 있는 문제이다.
long long은 int 보다 긴 8비트이긴 하지만, 100째자리를 담는 데엔 턱없다. 다음 사진을 보면 이해가 빠름.
1 | #include<iostream> |
C 표준 데이터형과 그 표현 범위
따라서 char형태로 string에 담는 방법을 선택함.
1) #include<string> 선언해주고,
2) std를 선언해야한다. (using namespace하면 안해도됨)
3) string s; 형태이다.
4)S[1] = string의 첫번째원소 , 배열과 비슷하게 쓰인다.
이 문제에서 중요한 포인트 하나 더는 string에 입력받은 숫자는 char, 즉 문자열 형태로 들어오므로, 문자를 숫자로 바꿔줘야 한다.
자바는.. 자동으로 바뀌거나 명령어 하나면 되지만, c++은 아스키코드를 활용해야 한다.
아스키코드 표를 보면 0= 48이므로.. (문자 N = 어떤 아스키코드 숫자) -( 문자 0 =48) = 숫자 N이 나온다.
해서.. sum 변수에 계속 숫자로 바꿔준 s[i]를 더해주면된다.
다음은.. 그냥 long long써서 해보려 했던 코드..
1 | #include<stdio.h> |





덧글