728x90
알고리즘15
📝 문제 설명
문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다.
👉 제한 사항
- s는 길이 1 이상, 길이 8 이하인 문자열입니다.
- s는 영문 알파벳 대소문자 또는 0부터 9까지 숫자로 이루어져 있습니다.
👉 입출력 예
s | return |
"a234" | false |
"1234" | true |
✌️ 나의 풀이
처음에는 parseInt()를 안쓰고 Number()를 썼는데 코드실행에서는
통과됐지만 제출 했을때는 정확도가 떨어져서 차이점을 찾아봤는데요.
parseInt()는 문자가 섞여있을 때 숫자로 시작하면 숫자를 인식하지만 숫자가 문자 뒤에 있으면 뽑아내지 못합니다. 그리고 소수점 형태로는 가져오지 못하고 정수로만 반환됩니다.
Numbaer()는 문자와 숫자가 섞여있을 때 NaN을 반환하고 소수점 형태 그대로 가져옵니다.
하지만, 제가 Number()를 사용했을 때 틀린 이유는 e를 숫자로 인식했기 때문인데요. e를 숫자로 바꾸면 자연로그의 밑이 되어 지수 표현이 되어 숫자 취급을 한다고 합니다.
parseInt()는 문자가 섞여있을 때 숫자로 시작하면 숫자를 인식하지만 숫자가 문자 뒤에 있으면 뽑아내지 못합니다. 그리고 소수점 형태로는 가져오지 못하고 정수로만 반환됩니다.
Numbaer()는 문자와 숫자가 섞여있을 때 NaN을 반환하고 소수점 형태 그대로 가져옵니다.
하지만, 제가 Number()를 사용했을 때 틀린 이유는 e를 숫자로 인식했기 때문인데요. e를 숫자로 바꾸면 자연로그의 밑이 되어 지수 표현이 되어 숫자 취급을 한다고 합니다.
function solution(s) {
return (s.length == 4 || s.length == 6) && s == parseInt(s)
}
👍 다른 풀이
또 전혀 예상 못한 정규식표현을 이용한 풀이방법입니다.
function alpha_string46(s){
var regex = /^\d{6}$|^\d{4}$/;
return regex.test(s);
}
728x90
반응형
'알고리즘' 카테고리의 다른 글
프로그래머스 1단계 : 나머지가 1이 되는 수 찾기 (2) | 2022.11.14 |
---|---|
프로그래머스 1단계 : 나누어 떨어지는 숫자 배열 (2) | 2022.11.11 |
프로그래머스 1단계 : 정수 내림차순으로 배치하기 (1) | 2022.11.09 |
프로그래머스 1단계 : 하샤드 수 (2) | 2022.11.08 |
프로그래머스 1단계 : x만큼 간격이 있는 n개의 숫자 (3) | 2022.11.07 |
댓글