Programmers | #7

Ssss·2021년 2월 11일
0

Algorithm

목록 보기
7/13
post-thumbnail
post-custom-banner

문제 설명

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

제한사항

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

입출력 예

나의 풀이

function solution(s){
return ((s.length === 4 || s.length === 6) && (Number(s))) ? true:false
}

는 fail .... 테스트 16개중에 15개 통과하고 하나를 fail했다 ... 나 뿐만 아니라 다른 사람들도 똑같이 테스트 11번에서 실패가 떠서 질문하는 사람들이 많았는데 이유가 "1e16"같은 4자리 숫자이지만 실제로는 훨씬 더 큰 단위의 숫자인것들에서 fail이 나는것 ... 이런것들을 거르기 위해서 다음과 같이 수정했다..

function solution(s){
if(s.includes('e')){
     return false}
if ((s.length === 4 || s.length === 6) && (Number(s))) {
  return true
}  else return false
}

'e'가 있다면 ,,, ㅎㅎㅎㅎ
참고로 Number("1e16")을 할경우 이렇게 뜬다.

Number("1e16") // 10000000000000000

다른 사람의 풀이를 보고 리뷰

function solution(s){
  var regex = /^\d{6}$|^\d{4}$/;
  return regex.test(s);
}

다른 사람들이 "코드의 마법사", "코딩 타노스" 라며 찬사를 하던 베스트 풀이 ... 정규식이라는데 뭔지 한번 찾아봐야겠다 ... 지금은 뭔지 이해가 전혀 안간다.

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

삼항연산자~!!!!!
isNaN()의 경우엔 다음과 같이 나온다

s = "1234" 
isNaN(s) //false
!isNaN(s) //true
profile
Front-end Developer 👩‍💻
post-custom-banner

0개의 댓글