Algorithm/Programmers

[Programmers - lv01] 자릿수 더하기 (cpp / python)

  • -
728x90

자릿수 더하기

 

코딩테스트 연습 - 자릿수 더하기

자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요. 예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다. 제한사항 N의 범위 : 100,000,000 이하의 자연수 입출

programmers.co.kr

문제 설명

주어지는 숫자의 각 자릿수를 더하는 문제.

방법은 여러가지다, 주어지는 숫자를 to_string으로 문자열화 하여 문자 1개씩 처리해도 되고, 숫자를 10으로 나누어 몫과 나머지를 이용하여 풀어도 된다.

문제 풀이

소스코드 : C++

문자열 변환

#include <iostream>

using namespace std;

int solution(int n){
    int answer = 0;
    string s = to_string(n);
    for (int i = 0; i < s.length(); i++)
        answer += s[i] - '0';
    return answer;
}

재귀

#include <iostream>

using namespace std;

int solution(int n){
    return n%10 + solution(n/10);
}

꼬리재귀

#include <iostream>

using namespace std;

int process(int sum, int n){
    if(n==0) return sum;
    return process(sum + n%10, n/10);
}
int solution(int n){
    return process(0,n);
}

문자열 변환

재귀

꼬리 재귀

소스코드 : Python

def solution(n):
    #return sum([int(i) for i in str(n)])
    return sum(map(int,str(n)))        

 

https://wonillism.tistory.com/17

 

[Algorithm - Theory]반복문과 재귀함수의 차이

알고리즘 문제를 풀면서 DFS, DP, Brute Force, Combination 등의 문제를 풀다 보면 간혹 의문이 생긴다. 나는 보통 위와 관련된 알고리즘 문제를 풀 때 재귀함수 를 이용한다. 문제에 따라 달라지긴 하겠�

wonillism.tistory.com

 

728x90
300x250
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.