[Algorithm] 문자열 다루기 기본

Hyowmls·2024년 5월 13일
0
post-thumbnail

2024.05.14

문제설명

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

제한 사항
  • s는 길이 1 이상, 길이 8 이하인 문자열입니다.
  • s는 영문 알파벳 대소문자 또는 0부터 9까지 숫자로 이루어져 있습니다.
입출력 예
s return
"a234" false
"1234" true

문제풀이

function solution(s) {
    if(s.length !== 4 && s.length !== 6) return false;
    
    for (let i = 0; i < s.length; i ++){
        if(isNaN(Number(s[i]))) return false;
    }
    return true
}
  • s의 길이가 4 또는 6이 아닐 경우 false를 반환하는 로직을 만들어준다
  • s의 i를 숫자로 변환 후 isNaN( ) - 숫자인지 검사하는 메서드를 이용해 조건이 true라면 false를 반환한다
    즉, s의 첫번째 값으로 a가 들어오고 isNaN(Number(a))는 true라서 false를 반환한다
  • 조건문에 걸리지 않으면 true를 반환한다

다른 풀이

function solution(s) {
	// 문자열의 시작과 끝이 숫자 6개로 이루어짐 or 문자열의 시작과 끝이 숫자 4개로 이루어짐
    let regex = /^\d{4}|^\d{6}$/
    return regex.test(s)
}

정규식표현을 이용해 문제를 푸는 방법이다

  • /pattern/ -> 슬래시로 패턴을 감싸준다
  • ^ -> 문자열의 시작을 나타낸다
  • \d -> 숫자를 표현한다
  • {n} -> 반복하는 횟수를 의미한다
  • $ -> 문자열의 끝을 나타낸다
  • | -> "또는"을 의미한다
  • test ( ) -> 주어진 문자열이 정규식표현을 만족하는지 판별하고 true, false를 반환한다

0개의 댓글