가수면

[Javascript] 문자열 다루기 기본 본문

CS/코딩 테스트

[Javascript] 문자열 다루기 기본

니비앙 2022. 11. 21. 16:08

문제 설명

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

 

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

 


코드 과정

  function solution(s) {
    var answer = s * 1;
    return answer === NaN ? false : true
}

분명 맞는데 이상하게 나와서 한참을 헤매다가 아래 코드로 수정하니 정상작동하기 시작했다.

  function solution(s) {
    var answer = s * 1;
    return isNaN(answer) ? false : true
}

(차이가 뭐지...?)

길이 4, 6의 조건을 추가한 코드

  function solution(s) {
    return s.length === 4 || s.length === 6 ? (isNaN(s * 1) ? false : true) : false
}

그런데 11번이 걸린다. 반례로 3e10같은 건 'e'가 수학 기호 같은 거라 계산이 되어 숫자로 나온다는 얘기 같다.

 

그렇게 내가 쓴 최종 코드

  function solution(s) {
    let answer = s.replace('e','a')
    return s.length === 4 || s.length === 6 ? ((isNaN(answer * 1)) ? false : true) : false
}

 

Comments