문제
자연수 N의 자릿수의 합을 구하는 문제이다.
풀이 방법
1. N을 string 형태로 변환
2. N의 길이만큼 N[i]를 정수로 변환해서 더함
* 형변환이 가장 중요한 요인
문제 풀이
#include <iostream>
#include <string>
#include <typeinfo>
using namespace std;
int solution(int n)
{
int answer = 0;
string str_n = to_string(n);
for (int i = 0; i < str_n.size(); i++)
{
answer += str_n[i] - '0';
}
return answer;
}
char에서 int로 형변환 하는 과정에서 (int) 등의 여러 형변환을 사용해봤는데, N[i]의 ascii 코드로 변환이 되는 문제를 겪었다.
char에서 '0'을 빼주면 int 형이 된다.
원리는 ascii 코드에서는 숫자 문자들이 연속된 코드 값을 가지고 있다.
'0'은 48, '1'은 49 ~ '9'는 57의 형태로 할당되어 있다.
그래서 char '2'를 int 2로 출력하고 싶다면 '2' - '0' 즉, 50 - 48 = 2 이런 형태로 형변환이 가능한 것이다.
처음에는 toInt, (int), stoi 등 여러가지를 다 써봤지만 다들 ascii 코드값을 가지고 있어 많이 혼란스러웠다.
이렇게 또 하나 알아간다 ㅎㅎ
'코딩테스트 준비' 카테고리의 다른 글
[ C++ ] 프로그래머스 카드 뭉치 (0) | 2025.02.10 |
---|---|
[C++] 프로그래머스 3진법 뒤집기 (0) | 2025.01.16 |
코딩테스트 공부 순서 (3) | 2024.10.22 |
[C++] 백준 2525번 오븐 시계 (0) | 2022.12.22 |
[C++] 백준 2884번 알람 시계(띠리링~) (0) | 2022.12.22 |