[프로그래머스] 문자열 다루기 기본

개발잘하기프로젝트·2020년 11월 11일
0
post-thumbnail

🤔 문제

프로그래머스 - 문자열 다루기 기본

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

❗️ 제한

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

💡 접근

문자열 s의 길이가 4 혹은 6을 만족하는지 체크하고, 조건이 true일 때 문자열의 값이 모두 숫자인지만 판별해주면 된다. every() 메서드에서 문자열 0이 포함되어 있는 경우만 주의해서 해결했다.

문자열 s에 대해서 문제에 주어진 길이 조건(4 혹은 6)과 오직 숫자로만(1, 2, 3, 4, 5, 6, 7, 8, 9, 0) 이루어져 있는지만 확인했다. 문자열 s가 음수('-100'), 진수법('0x10'), 부동소수점('1.11'), 지수표기법('1e20') 등 이러한 표기 방식일 경우라고 해도 문제와는 해당사항이 없다고 생각해서 조건문으로 제한을 두지 않았다. 즉, '-', '.', 'x', 'e' 등의 문자열은 모두 오직 숫자라는 조건에 맞지 않는다.

이것저것 검색하다가 isNaN()Number.isNaN()의 차이에 대해서 알게 되었다. 문제 풀이에 직접 적용하지는 않았지만 문자열이나 숫자와 관련된 알고리즘 문제풀이에서 알고 있으면 좋을 내용 같다고 생각해서 아래에 링크를 걸어두었다.

🧑🏻‍💻 코드

function solution(s) {
  const len = s.length;
  const answer =
    len === 4 || len === 6 
  	? [...s].every(str => +str >= 0)
  	: false;
  return answer;
}

solution('0000'); // true
solution('1234'); // true
solution('-100'); // false
solution('1.11'); // false
solution('1e20'); // false
solution('qwerty'); // false
solution('123abc'); // false
solution('1234qwerty'); // false

📝 참고

MDN - Array.prototype.every()
MDN - isNaN()
MDN - Number.isNaN()

Number.isNaN()
Number.isNaN() 메서드는 ECMAScript 2015에서 추가되었다. isNaN() 메서드의 더 엄격한 버전으로 볼 수 있다.

profile
🏠 ☕️ 🎞 🌿 + 🧑🏻‍💻

0개의 댓글