프로그래머스 문제풀이/Level 1
[프로그래머스] 문자열 다루기 기본
류시명
2020. 4. 13. 21:59
문제
문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 a234
이면 False를 리턴하고 1234
라면 True를 리턴하면 됩니다.
제한 사항
s는 길이 1 이상, 길이 8 이하인 문자열입니다.
입출력 예
s | return |
---|---|
a234 | false |
1234 | true |
접근
우선 길이가 4 혹은 6일 때 조건분기
isNaN()
함수를 이용해서 숫자인지 아닌지 확인하자
구현
const solution = s => {
if (s.length === 4 || s.length === 6) {
for (let letter of s) {
if (isNaN(letter) || letter === " ") {
return false;
}
}
return true;
}
return false;
};
isNaN(''); // 거짓: 빈 문자열은 NaN이 아닌 0으로 변환. false 리턴
isNaN(' '); // 거짓: 공백이 있는 문자열은 NaN이 아닌 0으로 변환. false 리턴
위의 이유 때문에
if (isNaN(letter) || letter === " ")
라는 조건을 달았다.
다른 사람의 풀이
function alpha_string46(s) {
return s.length == 4 || s.length == 6 ? !isNaN(s) : false
}
원래 나도 이런 식으로 풀었으나 이런 풀이는 11번 케이스에서 계속 막혔다.
이런 케이스는 지수형식("1e22")
의 문자열이 들어오면 문제가 생긴다.
1e22 이기 때문에 false가 리턴되어야 하지만
!isNaN(s);
에 의해 true가 리턴된다.
반응형