728x90
문제 풀이 과정은 아래와 같다.
1. 숫자의 개수 N 입력
2. 공백 없이 N개의 숫자 입력
3. 문자열 --> 숫자형 변환
1번과 2번 과정은 쉽게 해결할 수 있을 것이다.
백준 11720번을 해결하는 핵심은 다음과 같다.
문자열을 숫자형으로 변경하려면 아스키코드(ASCII)를 이해해야한다는 것이다.
아스키코드에서 같은 의미의 문자와 숫자의 코드값 차이는 48이다.
문자열 '1'은 아스키코드 값으로는 49 이기 때문에
숫자 1로 변환하기 위해서는 -48 혹은 -'0'의 연산이 필요하다.
필자는 -48 대신 -'0'을 선택했다.
아래는 str[i]를 정수로 계산하여 sum에 누적하는 방법의 코드이다.
sum += str[i]-'0';
전체 코드
#include <iostream>
#include <string>
//숫자의 합
using namespace std;
int main(){
int n;
cin >> n;
string str;
cin >> str;
int sum = 0;
for(int i = 0; i < str.length(); i++){
sum += str[i] - '0';
}
cout << sum << '\n';
}
브론즈4 난이도의 문제였다.
이 문제의 핵심은 위에서도 언급하였지만
문자열을 숫자형으로 변환하는 것이었다.
다음 글에서 C++에서의 형 변환에 대해 다뤄보겠다.
더 좋은 풀이가 있다면 댓글로 알려주세요 !!
피드백 환영입니다☺️
728x90
'Algorithm' 카테고리의 다른 글
[백준] 1546번 : 평균 - C/C++ (0) | 2025.03.05 |
---|---|
[C++] 형 변환 (0) | 2025.03.04 |
[자료구조] 배열과 리스트 그리고 벡터 (0) | 2025.03.04 |
[백준] 2167번 : 2차원 배열의 합 - C/C++ (0) | 2025.03.03 |
[백준] 10814번 : 나이순 정렬 - C/C++ (0) | 2025.03.02 |