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 |