📝24.01.12
🔗 문제 : https://school.programmers.co.kr/learn/courses/30/lessons/12931
문제 설명
자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요.
예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다.
처음에는 문자열로 바꾸어 각 자리를 분리한 뒤 int
로 바꾸는 방식을 구현했다.
하지만 너무 복잡하고 오히려 코드가 길어지는 것 같아 자리수 별로 분리하는 방법을 구상했다.
그래서 내가 생각한 것은 앞자리부터 분리하는 것이어서 아래와 같은 코드를 짰다.
using System;
public class Solution {
public int solution(int n) {
int answer = 0;
string s = n.ToString();
for(int i = s.Length - 1; i >= 0; i--) {
int a = n / (int) Math.Pow(10, i);
n -= a * (int) Math.Pow(10, i);
answer += a;
}
return answer;
}
}
하지만 남이 작성한 이 풀이를 보니 int n 자체를 변형하면 안된다는 생각에 사로잡혀 있었다는 것을 개달았다. 이렇게 주어진 매개변수를 변환시켜도 답을 구하는 데에는 아무 문제가 없다.
using System;
public class Solution {
public int solution(int n) {
int answer = 0;
while(n>0){
answer+=n%10;
n=n/10;
}
return answer;
}
}
위의 C# 풀이를 보고 작성한 풀이라서 위와 똑같다.
#include <iostream>
using namespace std;
int solution(int n)
{
int answer = 0;
// [실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
while(n > 0) {
answer += n % 10;
n /= 10;
}
return answer;
}
#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;
}