문제 설명
문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다.
제한 사항
- s는 길이 1 이상, 길이 8 이하인 문자열입니다.
- s는 영문 알파벳 대소문자 또는 0부터 9까지 숫자로 이루어져 있습니다.
입출력 예
s | return |
"a234" | false |
"1234" | true |
function solution(s) {
if (s.length === 4 || s.length === 6) {
return /^[0-9]+$/g.test(s)
}
return false
}
처음에는 조건에 맞으면 isNaN() 사용해서 숫자인지 문자인지 판별하려고 return !isNaN(s) 라고 작성했었는데 테스트 케이스 하나에서 실패가 떴다 ㅜ
진짜 아무리 생각해도 무슨 엣지 케이스가 있을지 모르겠어서 질문 게시판을 뒤졌는데 어떤분이 '0x16' 이라고 반례를 들어주신게 있었음
22를 16진수로 쓰면 저렇게 되는데 isNaN이 저기에서 x를 문자로 인식하지 않고 저 자체로 숫자 22라고 해석해서 false가 나와야하는데 true가 나왔던거같음... 진짜 생각도 못했다 아무튼 그래서 그냥 정규식 쓰는걸로 코드 바꿈
'study > Algorithm' 카테고리의 다른 글
[프로그래머스] 음양 더하기 (0) | 2025.03.04 |
---|---|
[프로그래머스] 정수 제곱근 판별 (0) | 2025.03.04 |
[프로그래머스] 정수 내림차순으로 배치하기 (0) | 2025.02.25 |
[프로그래머스] 나머지가 1이 되는 수 찾기 (0) | 2025.02.22 |
[프로그래머스] x만큼 간격이 있는 n개의 숫자 (0) | 2025.02.21 |