[프로그래머스] 자릿수 더하기

김유원·2024년 1월 12일
0

📝24.01.12

🔗 문제 : https://school.programmers.co.kr/learn/courses/30/lessons/12931

문제 설명

자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요.
예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다.

[C#] 내가 작성한 풀이

처음에는 문자열로 바꾸어 각 자리를 분리한 뒤 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;
    }
}

[C#] 남이 작성한 풀이

하지만 남이 작성한 이 풀이를 보니 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++] 내가 작성한 풀이

위의 C# 풀이를 보고 작성한 풀이라서 위와 똑같다.

#include <iostream>

using namespace std;
int solution(int n)
{
    int answer = 0;

    // [실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
    while(n > 0) {
        answer += n % 10;
        n /= 10;
    }

    return answer;
}

[C++] 남이 작성한 풀이

C++ 풀이 중에는 내가 C#으로 처음 문제를 풀 때 시도하고자 했던 방법으로 문제를 풀이한 것도 존재한다.

#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;
}
profile
개발 공부 블로그

0개의 댓글

관련 채용 정보