발자취
[프로그래머스 Lv.1 / C언어] Day8. 자릿수 더하기 본문
2024. 05. 25 - 코딩테스트 스터디 Day8
01. 문제 설명
자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요.
예를 들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다.
02. 제한사항
- N의 범위 : 100,000,000 이하의 자연수
03. 입출력 예
| N | answer |
| 123 | 6 |
| 987 | 24 |
04-1. 풀이 및 답 - C언어
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
int solution(int n) {
int answer = 0;
while (n > 0) {
answer += n % 10;
n /= 10;
}
return answer;
}
내가 작성한 코드는 위와 같다.
n을 10으로 나눈 나머지를 answer에 더한 뒤, n을 10으로 나눈다.
이 작업을 n이 0보다 큰 동안 반복하면 된다.

04-2. 풀이 및 답 - C++
#include <iostream>
using namespace std;
int solution(int n)
{
int answer = 0;
while (n > 0) {
answer += n % 10;
n /= 10;
}
cout << "Hello Cpp" << endl;
return answer;
}
C++도 코드가 거의 유사하다.

05. 다른 사람의 풀이
1) while 조건으로 n 넣기
while문 조건으로 그냥 n을 넣으신 분도 있었다. while(n)
2) 문자열로 바꿔서 풀기
문자열로 바꿔서 푸신 분도 봤는데 진짜 생각지도 못한 풀이 방식이라 신기했다.
#include <iostream>
#include <string>
using namespace std;
int solution(int n)
{
int answer = 0;
string s = to_string(n);
for(int i = 0; i < s.size(); i++) answer += (s[i] - '0');
// [실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
cout << "Hello Cpp" << endl;
return answer;
}
문자 s[i]에서 '0'의 아스키값 48을 빼는 방식으로 풀이하셨다..
또 하나 배웠다..

'코딩테스트 > Daily Coding (C, C++)' 카테고리의 다른 글
| [프로그래머스 Lv.1 / C++] Day10. 정수 내림차순으로 배치하기 (0) | 2024.05.27 |
|---|---|
| [프로그래머스 Lv.1 / C언어] Day9. 자연수 뒤집어 배열로 만들기 (0) | 2024.05.26 |
| [백준 / C언어] Day7. 균형잡힌 세상 (4949) (0) | 2024.05.24 |
| [백준 / C언어] Day6. 괄호 (9012) (0) | 2024.05.23 |
| [백준 / C, C++] Day5. 제로 (10773) (0) | 2024.05.22 |