프로그래밍/코딩 문제 풀이
프로그래머스 2024.01.16 (1Lv 자릿수 더하기)
Rozentea
2024. 1. 16. 15:56
문제
문제 설명
자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요.예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다.
제한사항
◈ N의 범위 : 100,000,000 이하의 자연수
입출력 예
N answer 123 6 987 24
입출력 설명 예
입출력 예 #1
문제의 예시와 같습니다.
입출력 예 #2
9 + 8 + 7 = 24이므로 24를 return 하면 됩니다.
코딩
#include <iostream>
#include <string>
using namespace std;
int solution(int n)
{
int answer = 0;
// [실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
cout << "Hello Cpp" << endl;
string strnum = {};
strnum = to_string(n);
for (size_t i = 0; i < strnum.length(); ++i)
{
answer += (strnum[i] - 48);
}
return answer;
}
해당 문제를 풀기 위해서 주어진 수의 각 자리수들을 알아야 한다.
N의 크기가 모두 동일하다면 기본 연산자들을 이용해서 자리 수를 구할 수 있으나, N의 범위는 100,000,000 이므로 모든 자리수를 반복문을 이용해 찾으려면 시간이 너무 오래걸린다.
때문에 생각해낸 방법은 string을 이용하면, 수의 각 자리수마다 문자열의 각 원소에 담기기 때문에 주어진 정수 N을 문자열로 변경해, 문자열의 길이만큼 idx에 접근하여 해당 수만큼 더 해나가면 쉽게 풀 수 있었다.
이때, 문자열의 각 원소는 char 형태로 저장되기 때문에 원하는 정수 형태로 바꿔주기 위해서 48을 빼주었다. (아스키코드표 참고)