쉬움 0명 해결 정답률 0%

유효한 숫자 더하기

사람이 입력한 데이터는 지저분할 수 있습니다. 문자열 목록이 주어질 때, 오류 없이 `whole numbers`만 더하고 나머지는 무시하세요.

배우게 될 내용

  • 잘못된 입력에서 멈추지 않고 건너뛰기
  • 숫자로 바꾸기 전에 공백 제거하기
  • 선택적 부호와 숫자열 알아보기

문제

원문 보기 (영어)

사람이 입력한 데이터는 지저분합니다. 문자열 목록이 주어지며, whole numbers인 것들만 더하고 나머지는 오류를 내지 말고 무시해야 합니다.

항목은 양쪽 끝의 공백을 제거한 뒤, 선택적인 + 또는 - 부호 다음에 하나 이상의 숫자가 오면 유효합니다. 그 외의 것들(빈 문자열, "2.5" 같은 소수, 단어)은 건너뜁니다.

sum_valid_numbers(values)를 구현하세요.

Input

values: 읽어들일 항목들입니다.

Output

유효한 whole numbers의 합을 반환하세요(없으면 0).

제약 조건

0 ≤ 항목 수 ≤ 1,000

각 항목은 최대 20자; 유효한 숫자는 64비트 정수 범위

예시

예시 1
입력:
values = ["10", " 5 ", "abc", "-3"]

예상 출력:
expected = 12
입력:
std::vector<std::string> values = {"10", " 5 ", "abc", "-3"};

예상 출력:
long long expected = 12;
입력:
string[] values = new string[] {"10", " 5 ", "abc", "-3"};

예상 출력:
long expected = 12;

설명

"10", " 5 " (공백은 제거됨) 및 "-3"은 whole numbers이고, "abc"는 건너뜁니다. 10 + 5 - 3 = 12.

예시 2
입력:
values = ["2.5", "", "seven"]

예상 출력:
expected = 0
입력:
std::vector<std::string> values = {"2.5", "", "seven"};

예상 출력:
long long expected = 0;
입력:
string[] values = new string[] {"2.5", "", "seven"};

예상 출력:
long expected = 0;

설명

어떤 항목도 whole number가 아니므로 합은 0입니다.

접근 방법

먼저 스스로 풀어 본 뒤 힌트를 하나씩 열어 보세요.

힌트 1

먼저 공백을 없애고, 남은 것이 올바른 정수인지 판단하세요.

힌트 2

try/except 안에서 변환하면(또는 문자를 검사하면) 멈추지 않고 잘못된 항목을 건너뛸 수 있습니다.

힌트 3

"+"처럼 부호만 있는 문자열은 숫자가 아닙니다.

예상 복잡도

시간 O(전체 길이), 추가 공간 O(1)

참고 자료

이 문제는 CodeUtility에 맞게 수정되었습니다. 위의 설명과 제한 조건을 따르세요.

다른 사람의 풀이 보기

커뮤니티 솔루션

아직 공개된 풀이가 없습니다. 문제를 풀고 첫 풀이를 공유하세요.