Algorithm - 문자열 다루기 기본

Cho2andy·2022년 5월 16일
0

알고리즘

목록 보기
17/28
post-thumbnail

문자열 다루기 기본

<프로그래머스 문제를 기반으로 합니다>

문제 설명

  • 문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요.
  • 예를 들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다.

입력값 s의 구성 문자가 숫자로만 이루어져 있는지 파악하는 문제다!!
딱 보자마자 생각난 건 정규표현식 이었다 🙂

제한 사항

  • s는 길이 1 이상, 길이 8 이하인 문자열입니다.
입출력 예
s		return
"a234"	false
"1234"	true

어떻게 푸는게 좋을까?? 🙄

  1. 정규표현식을 찾아서 검사하는 내장 함수를 찾아보자!!
  2. Number(), parseInt() 같은 문자열 => 숫자 변환 함수를 사용하여 나오는 출력값을 어떻게 비교하면 되지 않을까?? ¯_(ツ)_/¯

<풀이 완성 코드>

function solution(s) {
	return (s.length === 4 || s.length === 6) && /^[0-9]+$/.test(s)
}

정규표현식을 이용한 풀이이다.
정규표현식에 쓰인 의미들을 간단히 살펴보자!! 😁

  • 점검 하고자 하는 것 들 : /[0-9]/ /[a-z]/ /[A-Z]/ ...
  • ^ : 정규 표현식 시작을 뜻함
  • $ : 정규 표현식 끝을 뜻함
  • + : 반복해서 체크해라라는 명령

test() 메서드

  • 주어진 문자열이 정규 표현식을 만족하는지 판별하고, 그 여부를 true 또는 false로 반환합니다.

굉장히 유요한 메서드와 정규표현식에 대해 공부할 수 있었던 코드였다.
<많이 사용하는 정규표현식 궁금하지?????>

<추가 풀이 완성 코드>

이게 Number()랑 parseInt() 가지고 노는 코드이다
좀 어려웠다 🤣

function solution(s) {
	answer = (s.length === 4 || s.length === 6) && Number(s) === parseInt(s)
}

이 코드의 중요한 점은 NaN 이다.

문자가 포함된 String 값을 Number() / parseInt() 하게 되면, 모두 NaN을 반환한다.

그 떄 NaN은 특이하게 아래와 같이 리턴한다.

NaN === NaN  // false

그렇기에 s 값에 문자가 포함된 String 값이 입력되면 && 후자의 코드에서 무조건 false 값이 반환되므로, 문자가 들어간 String을 구별해낼 수 있게 되는 것이다. ( ̄︶ ̄)↗ 

<undefined / NaN / Null> 궁금하지!!??

profile
먹고 배우는 것엔 아끼지 말자구 ( ̄︶ ̄)↗

0개의 댓글