본문 바로가기
프로그래머스 코딩테스트 문제/Level 1

[프로그래머스] - 자릿수 더하기(C#)

by jyppro 2023. 7. 19.

자릿수 더하기

이번시간에는 "자릿수 더하기" 문제를 풀어보도록 하겠습니다.

 

문제 설명

자연수 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 하면 됩니다.

 

시작 코드

using System;

public class Solution {
    public int solution(int n) {
        int answer = 0;
        return answer;
    }
}

 

나의 풀이

문자열을 활용한 풀이

using System;

public class Solution
    {
        public int solution(int n)
        {
            int answer = 0;
            string temp = n.ToString();
            for (int i = 0; i < temp.Length; i++) { answer += (int)Char.GetNumericValue(temp[i]); }
            return answer;
        }
    }

 

숫자로 풀이

using System;

public class Solution {
    public int solution(int n) {
        int answer = 0;
        while (n > 0)
        {
            answer += n % 10;
            n = n / 10;
        }
        return answer;
    }
}

풀이 방식을 살펴보겠습니다. 가장 먼저 두가지의 풀이 방식이 있습니다. 문자열을 활용한 풀이와 숫자를 사용한 풀이입니다. 이 문제를 푸는 방법은 각 자리수를 따로 잘라내어 더해주는 계산을 해야 합니다. 그 과정을 하나씩 살펴보겠습니다.

 

문자열을 활용한 풀이부터 보면, string 타입의 temp를 선언하고 그 안에 n.ToString()을 통해 int형인 n을 string형으로 변환시켜 넣어줍니다.그리고 for문을 temp의 길이만큼 돌려 answer에  int형으로 다시 변환시킨 temp의 인덱스 자릿수 숫자를 더해줍니다. 그리고 정답을 리턴합니다.

 

이번엔 숫자로 푸는 방법을 살펴보겠습니다. while문을 통해 주어진n이 0보다 크다면 answer에 n을 10으로 나눈 나머지를 더해주고, n을 10으로 나눠주는 것을 반복합니다. while문이기 때문에 n이 0보다 크지 않을 때까지 계속 반복합니다. 그리고 정답을 리턴합니다.

 

코드로 보나, 설명으로 보나 숫자로 푸는 방식이 훨씬 간단하고 편해보입니다. 하지만, 문자열로 변환해서 계산하는 방식은 추후에도 많이 사용될 여지가 있으니 한번쯤은 알아두는 것도 괜찮습니다. 어찌되었든 간에 해당 문제의 목적은 주어진 자연수 N의 각 자릿수를 더한 값을 만드는 것이기 때문에 다른 방법이 있다면 스스로 방법을 찾아보는 것도 좋습니다.

 

<NEXT>

이번에는 두가지 방식으로 "자릿수 더하기" 문제를 풀어보았습니다. 다음에는 "자연수 뒤집어 배열로 만들기" 문제를 살펴보도록 하겠습니다. 감사합니다.