숫자 글자를 값으로 바꿔요
앞 레슨에서 문자와 문자열의 묶음을 읽었어요. 이번에는 숫자 문자들을 정수 하나로 해석해요. '7'-'0'은 숫자 7이에요. 숫자 문자를 오른쪽으로 하나 붙이면 기존 값에 10을 곱하고 새 숫자를 더해요.
문자 2·4·6을 읽는 상태는 0→2→24→246이에요. 기존 값 24에 문자 6을 붙이면 24*10+6이 돼요. 앞의 0도 같은 방식으로 읽을 수 있어요.
구분자를 만나면 한 숫자가 끝나요
계산 전체의 합 total과 지금 읽는 숫자 number를 분리해요. 구분자를 만나면 number를 total에 더하고 number를 0에서 다시 시작해요.
| 읽은 문자 | 지금 숫자 | 끝난 숫자 합 |
|---|---|---|
| 1 | 1 | 0 |
| 2 | 12 | 0 |
| + | 0 | 12 |
| 4 | 4 | 12 |
마지막 4 뒤에는 +가 없어요. 문자열을 다 읽은 뒤 남은 숫자는 어떻게 할까요? 마지막 항의 값으로 포함해야 해요. for (char ch : text)는 문자들을 차례로 읽는 범위 반복이에요.
직접 풀어봐요
text는 0 이상의 정수들을 +로 연결한 식이에요. 각 정수를 십진수로 해석해 전체 합을 반환해요. 숫자 앞에 0이 붙어도 같은 값을 뜻해요.
항 개수는 120, 각 항의 값은 09999, text 길이는 1100이에요. 문자 범위는 09와 +뿐이에요. 빈 항·공백·맨 앞 또는 맨 뒤 +는 없어요. 실행용 입력은 text 한 줄, 출력은 반환값이에요. 하네스가 입출력을 처리해요.
예시 1: text="12+3+05" → 20. 12+3+5를 더해요.
예시 2: text="7+8" → 15. 두 항의 합이에요.
예시 입력
12+3+05
예상 결과
20
예시 입력
7+8
예상 결과
15
핵심 개념
stl-string: 여러 자리 숫자와 완료된 항의 합을 따로 유지해요.