숨어 있는 숫자 자리수 합계

자바스크립트 코딩테스트 문제로 digit-scan 주제를 연습해보세요. 난이도는 easy이며, 브라우저에서 바로 JavaScript로 풀이를 실행할 수 있습니다.

today easy digit-scan 함수명: sumHiddenDigits 제한 시간: 200ms

문자열 속에 섞여 있는 숫자 글자들만 찾아 모두 더하는 문제입니다.

문제 설명

문자열 message가 주어집니다.

이 문자열에는 영문자, 기호, 숫자 문자가 섞여 있을 수 있습니다. 숫자 문자 '0'부터 '9'까지만 골라 각 자리수 값의 합을 구해 반환하는 sumHiddenDigits 함수를 작성하세요.

예를 들어 "a1b2c3"이라면 숫자 글자는 1, 2, 3이고 합은 6입니다.

주의할 점은 "404"처럼 숫자가 연속되어 있어도 이를 404라는 하나의 수로 보지 않고, 4 + 0 + 4처럼 각 글자를 따로 더한다는 점입니다.

제한사항

  • message의 길이는 0 이상 100,000 이하입니다.
  • message는 영어 대소문자, 숫자 문자, 일반 기호를 포함할 수 있습니다.
  • 숫자가 하나도 없으면 0을 반환합니다.
  • 연속된 숫자도 하나의 정수로 묶지 않고 각 자리수를 따로 더합니다.

예시

  • 입력: message = "a1b2c3" → 출력: 6
  • 입력: message = "room404" → 출력: 8
  • 입력: message = "no-digits-here" → 출력: 0
  • 입력: message = "9z9z9" → 출력: 27

힌트

  • 문자열을 한 글자씩 확인해 보세요.
  • 현재 글자가 숫자인지만 판별하면 됩니다.
  • 숫자 글자라면 실제 숫자 값으로 바꿔 합계에 더하면 됩니다.

해설

이 문제는 문자열을 한 번만 순회하면서 숫자 문자인 경우에만 합계에 더하면 해결됩니다.

핵심은 두 가지입니다.

  1. 현재 문자가 숫자인지 판별한다.
  2. 숫자라면 그 글자를 숫자 값으로 바꿔 누적한다.

예를 들어 "room404"를 보면

  • r, o, o, m은 숫자가 아니므로 건너뜁니다.
  • 4, 0, 4는 숫자이므로 4 + 0 + 4 = 8을 더합니다.

따라서 정답은 8입니다.

이 방식은 문자열 전체를 한 번만 보므로 시간 복잡도는 O(n)이고, 추가 공간은 O(1)입니다.

코드 작성

starter code를 바탕으로 함수를 완성한 뒤 예제 테스트를 실행해보세요.

JavaScript 에디터 로딩 중...

커스텀 테스트

함수 인자를 JSON 배열 형태로 입력하세요. 예: [3, 5], [[1, 2, 3]]

아직 실행하지 않았습니다.

실행 결과

아직 실행하지 않았습니다.

예제 테스트를 실행하면 여기에서 결과를 확인할 수 있습니다.

댓글

문제 풀이 아이디어, 질문, 반례를 자유롭게 나눠보세요.