1. 문제 상세
https://www.acmicpc.net/problem/11720
2. 문제 접근
숫자를 지정한 갯수 만큼 입력받아 그 수들의 합을 구하는 문제이다.
단계가 문자열 파트인 만큼, 문자열을 사용하여 문제를 해결해보자.
먼저 입력받을 정수의 개수 n 과 n개의 정수들을 문자열로 입력받는다.
반복문을 n 번 반복하도록 한다.
반복문으로 문자열의 0 번 인덱스 값(문자열의 첫 번째 문자, 즉 첫 번째 정수)부터 n-1번 인덱스의
값(마지막 정수)까지 결과를 저장할 변수(sum이라 하자)에 더한다.
이 때, 문자열의 요소에 접근 할 때, 배열과 같이 인덱스를 통해 접근하는 경우 반환값이 문자 형태(char)이다.
따라서 문자->정수 변환을 위해 문자에서 '0' 의 값을 빼준다.
이를 통해 문자 '1' 이면 정수 1로, '2'면 정수 2로 변환이 가능하다.
3. 문제 풀이
#include <iostream>
using namespace std;
int main() {
int n, sum = 0;
string s;
cin >> n;
cin >> s;
for(int i = 0; i < n; i++) {
sum += s[i] - '0';
}
cout << sum;
}
정수형 변수 n 과 sum 을 선언하고 sum 을 0으로 초기화한다.
문자열 객체 s 를 생성.
cin 으로 정수의 갯수와 입력한 갯수만큼의 정수들을 입력받아 각각 n 과 s 에 저장한다.
for문으로 i 가 0부터 n 보다 작을 때 1씩 더하며 반복하도록 한다.
반복에서는 sum 에 문자열 s 의 i 번 요소에 '0' 의 값을 빼고 더한다. (문자 -> 정수 변환 후 더하기)
cout 으로 sum 을 출력.
4. 성능 확인
5. 마무리
정수들을 하나의 정수로 입력받아 나머지 연산을 통해 각 자릿수 구해 더하기 등
문자열 없이도 문제 해결이 가능하지만 이번 단계가 문자열 파트이므로 문자열을 사용하여 문제를 해결해 보았다.
'백준 - 단계별로 풀어보기 > 문자열' 카테고리의 다른 글
[백준] 2675번 : 문자열 반복 | C++ (0) | 2023.09.25 |
---|---|
[백준] 10809번 : 알파벳 찾기 | C++ (0) | 2023.09.25 |
[백준] 11654번 : 아스키 코드 | C++ (0) | 2023.09.22 |
[백준] 9086번 : 문자열 | C++ (0) | 2023.09.22 |
[백준] 2743번 : 단어 길이 재기 | C++ (0) | 2023.09.22 |