| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 메가바이트스쿨
- 리액트
- TypeScript
- styled-components
- react
- 비전공자
- Github
- 패스트캠퍼스
- JavaScript
- useRef
- 코딩테스트
- 프로그래머스
- CSS
- 자바스크립트
- 공식문서
- 프론트엔드
- MegabyteSchool
- 개발자취업부트캠프
- 국비지원교육
- useMemo
- 이벤트
- 입문
- 내일배움카드
- 모던 자바스크립트 딥 다이브
- 자료구조
- next.js
- GIT
- 모던 딥 다이브 자바스크립트
- 알고리즘
- 개발 공부
Archives
- Today
- Total
개발 기록 남기기✍️
[프로그래머스] 문자열 다루기 기본 본문
🗒️ 문제 설명
문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다.
⚠️ 제한 사항
- s는 길이 1 이상, 길이 8 이하인 문자열입니다.
- s는 영문 알파벳 대소문자 또는 0부터 9까지 숫자로 이루어져 있습니다.
👀 입출력 예
| s | return |
| "a234" | false |
| "1234 | true |
❇️ 나의 풀이
[1트]
function solution(s) {
const isValidLen = s.length === 6 || s.length === 4
const isValidNum = !isNaN(s)
return isValidLen && isValidNum
}
길이와 숫자 판별을 각 변수에 담아서 작성했다.
숫자로만 구성되어있는지 판단하기 위해서 isNaN 함수를 사용했다.
그런데.. 다 통과하는데 테스트 11번에서만 계속 통과되지 않았다.
왜 그런지 확인해봤더니...
🚨이런 문제가 있어요
대개의 프로그래밍 언어에서는 실수를 표기할 때 지수 표기법을 지원합니다. 예를 들어 5e3은 5 × 1000을, -4.01e-2는 -0.0401을 의미합니다. 그런데 문자열을 실수/정수형으로 형변환 하거나, 해당 문자열을 숫자로 인식할 수 있는지 판단할 때 지수 표기법이 쓰이는 경우가 있습니다. 문자열 안에 숫자가 아닌 문자가 있어도 지수 표기법으로 읽을 수 있다면 이를 숫자로 판별하는 겁니다. 이에 유의하여 라이브러리를 사용해야 합니다.
라고 한다. 테스트 케이스에 s 문자열 안에 e가 섞여 들어갔는데, 해당 문자열이 isNaN 함수에서 지수로 인식되어 isNaN을 돌렸음에도 불구하고 false가 나온 것이다. 그래서 해당 케이스도 includes로 같이 처리해주었다.
[2트]
function solution(s) {
const isValidLen = s.length === 6 || s.length === 4
const isValidNum = !s.includes('e') && !isNaN(s)
return isValidLen && isValidNum
}
✍️ 리뷰
✔️ 정규표현식으로 풀었다면.... 코드가 한 줄로 줄었을텐데... ;_;
'코딩 테스트 연습' 카테고리의 다른 글
| [프로그래머스] 크기가 작은 부분 문자열 (0) | 2023.07.16 |
|---|---|
| [프로그래머스] 달리기 경주 (0) | 2023.07.02 |
| [프로그래머스] 두 정수 사이의 합 (0) | 2023.03.29 |
| [프로그래머스] 옹알이(1) (0) | 2023.01.07 |
| [프로그래머스] 유한소수 판별하기 (0) | 2023.01.07 |