공부/코딩테스트

Q. 숨어있는 숫자의 덧셈 (2)

뀨뿌뀨뿌 2024. 12. 16. 15:31

문자열 my_string이 매개변수로 주어집니다. my_string은 소문자, 대문자, 자연수로만 구성되어있습니다. my_string안의 자연수들의 합을 return하도록 solution 함수를 완성해주세요.

🚫제한 사항
1 ≤ my_string의 길이 ≤ 1,000
1 ≤ my_string 안의 자연수 ≤ 1000
연속된 수는 하나의 숫자로 간주합니다.
000123과 같이 0이 선행하는 경우는 없습니다.
문자열에 자연수가 없는 경우 0을 return 해주세요.

❗입출력 예

my_string result
"aAb1B2cC34oOp" 37
"1a2b3c4d123Z" 133

😀 내가 푼 답

const solution = (my_string) => {
    return (my_string.match(/\d+/g) || [])
        .map(Number)
        .reduce((sum, num) => sum + num, 0);
};
  • match
    • 문자열에서 정규 표현식과 일치하는 부분을 찾아 배열로 반환하는 문자열 메서드
    • const result = string.match(regexp);
      • string
        검사할 대상 문자열
      • regexp
        찾을 패턴을 정의하는 정규 표현식
    • 반환값
      • 일치하는 부분이 있으면 배열을 반환
      • 일치하는 부분이 없으면 null을 반환
    • 반환값 형태
// 1. 정규 표현식에 g 플래그(전체 검색)가 있을때
// - 문자열 내 일치하는 모든 부분을 배열로 반환함

const str = "abc123def456";
const result = str.match(/\d+/g);
console.log(result); // ["123", "456"]

// 2. 정규 표현식에 g 플래그가 없을 때
// 첫 번째 일치하는 부분만을 반환함
// 이때 반환된 배열에는 추가 정보가 포함됨

const str = "abc123def456";
const result = str.match(/\d+/);
console.log(result); 
// ["123", index: 3, input: "abc123def456", groups: undefined]
  • 플래그(옵션)
    • 정규 표현식에 사용할 수 있는 주요 플래그
      • g -> 전역 검색(일치하는 모든 결과를 찾음)
      • i -> 대소문자 구분 없이 검색
      • m -> 여러 줄 검색
      • y -> 문자열의 특정 위치부터 검색
      • u -> 유니코드 모드

처음에 제출한 답

const solution = (my_string) => {
    return my_string
        .match(/\d+/g)
        .map(Number)
        .reduce((sum, num) => sum + num, 0);
};
  • math 메서드가 숫자를 찾지 못했을 때 null을 반환해서 런타임 에러 발생
    • null이 반환되면 map을 호출하려고 할때 에러가 발생하기 때문에 
  • math의 결과가 null인지 확인하고 null인 경우엔 빈배열로 처리

😊 문제풀이 답안 OR 다른사람들 답안

function solution(my_string) {
  return my_string.split(/\D+/).reduce((acc, cur) => acc + Number(cur), 0);
}

function solution(my_string) {
    return my_string.toLowerCase().replace(/[a-z]/g, " ").split(" ").map((v) => v*1).reduce((a,b) => a+b)
}

'공부 > 코딩테스트' 카테고리의 다른 글

Q. 배열의 길이를 2의 거듭제곱으로 만들기  (0) 2024.10.14
Q. 이차원으로 만들기  (0) 2024.04.01
Q. 중복된 문자 제거  (0) 2024.04.01
Q. 최대값 만들기(2)  (0) 2024.02.26
Q. 주사위의 개수  (0) 2024.02.26