[알고리즘/Programmers] 문자열 다루기 기본

해달·2021년 7월 18일
0

문제 설명

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


제한 조건

  • s는 길이 1 이상, 길이 8 이하인 문자열입니다.

입출력 예시


내 풀이

function solution(s) {
    var answer = false; // 기본값은 false로 지정한다
    let newS = s.split(''); // 문자열들을 배열로 나눈 뒤
    
    if(s.length === 4 || s.length === 6){ // 만약 4글자이거나 6글자라면
       for(let i = 0; i<newS.length; i++){ // 배열의 length만큼 for문을 돈다
           if(isNaN(newS[i]/1)){ // 배열의 값이 isNaN 이라면 
               return false; // false를 return 하고
           } 
       } answer = true; // return 하지 않고 for문이 끝났다면 answer은 true를 담는다
    }
    return answer; // answer을 return한다.
}

다른 분 풀이

function alpha_string46(s){
  var regex = /^\d{6}$|^\d{4}$/;  // 정규식표현을 변수에 담고
  return regex.test(s); // 그 변수에 test메서드로 true/false 반환
}

알게 된 것 (1)

isNaN (메서드)
isNaN() 함수는 어떤 값이 NaN인지 판별합니다_MDN문서링크

isNaN이라는 값을 console로 찍어보고 하는데, 그 값으로 true,flase를 낼 수가 없었다.
다른 type들은 확인이 잘 되는데 얘는 왜 안될까? 내가 뭘 잘못하는걸까? 싶어서
그제서야 검색을 해 보았더니 isNaN이라는 함수를 발견하게 되어 사용하게 되었다.
역시 모르는건 검색이 답이고 내가 모르는 함수는 아직도 많다는 것을 ..
알게되면 나중에 결국 유용하게 쓰이는 함수들 , 프로그래머스를 풀면서 많이 알게되고있다.



.test()
test() 메서드는 주어진 문자열이 정규 표현식을 만족하는지 판별하고, 그 여부를 true 또는 false로 반환합니다 _MDN문서링크

다른분이 정규식으로 푸신걸 보고 .test라는 메서드도 찾아봐서 새로운 메서드도 알게 되었고,
정규식에 이전에 공부했던 부분에 대해서 다시 짚어보았다.

드림코딩 앨리님 영상보고 공부!

/^ \ d { 6 } $ | ^ \ d { 4 } $/

  정규식  해석
/ ~ /~ 안에 표현 하겠다
^문장의 시작
{min,}최소, {6} / {4}
\ddigit 숫자
$문장의 끝
|또는

해석으로 표현해봐도 어렵다 😅

0개의 댓글

관련 채용 정보