본문 바로가기
CodeSignal

sumUpNumbers

by Doromi 2024. 1. 8.
728x90
반응형

주어진 문자열에서 등장하는 모든 숫자의 합을 계산하는 함수를 작성하는 것입니다. 예를 들어, "2 apples, 12 oranges"라는 문자열에서는 숫자 2와 12가 나오므로 이 숫자들의 합인 14를 반환해야 합니다.

문제 해결을 위한 접근 방법은 다음과 같습니다:

문자열을 순회하면서 각 숫자를 찾습니다.
찾은 숫자를 모두 더하여 합을 계산합니다.

int solution(string inputString) {
    int ret = 0;
    int current = 0;
    foreach(char c in inputString){
        if(Char.IsDigit(c)){
            current = current * 10 + (c-'0');
        }
        else{
            ret += current;
            current = 0;
        }
    }
    ret += current;
    return ret;
}
int ret = 0;: 최종 결과를 저장할 변수 ret를 초기화합니다. 이 변수는 함수가 반환할 숫자의 합을 나타냅니다.

int current = 0;: 현재 찾고 있는 숫자를 저장하는 변수 current를 초기화합니다. 이 변수는 현재 숫자를 구성하는 각 자릿수를 누적해서 저장할 때 사용됩니다.

foreach(char c in inputString) {: 입력 문자열을 문자 단위로 순회합니다.

if(Char.IsDigit(c)) {: 현재 문자 c가 숫자인지 확인합니다. Char.IsDigit 메서드는 주어진 문자가 숫자인지 여부를 판단합니다.

current = current * 10 + (c - '0');: 현재 찾고 있는 숫자를 누적하는 부분입니다. 현재 숫자를 10을 곱하고 문자 c에 ASCII 코드 값 '0'을 뺀 값을 더하여 누적합니다.

else {: 현재 문자가 숫자가 아닌 경우입니다.

ret += current;: 찾은 숫자를 최종 결과에 더합니다.

current = 0;: 현재 숫자를 초기화합니다.

ret += current;: 반복문이 끝난 후 마지막 숫자를 더해줍니다. 이 부분은 입력 문자열이 마지막에 숫자로 끝나는 경우를 처리합니다.

return ret;: 최종 결과를 반환합니다.
728x90
반응형

'CodeSignal' 카테고리의 다른 글

Count pairs in array whose sum is divisible by K  (0) 2024.01.10
Different Squares  (0) 2024.01.09
Valid Time  (1) 2024.01.07
longestWord  (0) 2024.01.07
deleteDigit  (0) 2024.01.06