채린씨의 티스토리
[Programmers] Level1 - 문자열 다루기 기본(JavaScript) 본문
문제 설명
문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다.
제한 사항
- s는 길이 1 이상, 길이 8 이하인 문자열입니다.
입출력 예
s | return |
"a234" | false |
"1234" | true |
나의 첫 번째 풀이(실패)
쉽네~ 하고 풀었는데 하나의 테스트 케이스에서만 실패해서 당황했다.
반례: 1e22
=> 1e22를 Number()를 이용해서 숫자로 형 변환하면 1의 22승, 즉 1이 된다!!!
=> 이런 코너 케이스도 생각할 수 있도록 하자...
function solution(s) {
return (s.length === 4 || s.length === 6) && (Number(s)) ? true : false;
}
나의 풀이
function solution(s) {
// 길이가 4 혹은 6이 아니면 false 반환
if (s.length !== 4 && s.length !== 6) return false;
// 각 자리중에 숫자가 아닌 것이 하나라도 있으면 false 반환
for (let i = 0; i < s.length; i++) {
if (isNaN(Number(s[i]))) return false;
}
// 위의 모든 조건에 포함되지 않으면
// (길이가 4 혹은 6이고, 숫자로만 구성되어 있으면) true 반환
return true;
}
좋았던 다른 사람의 풀이
정규표현식을 사용한 점이 인상 깊었다.
/*
/\d{6}/: 6자리 숫자 포함
/^\d{6}/: 6자리 숫자로 시작
/\d{6}$/: 6자리 숫자로 끝
/^\d{6}$/: 6자리 숫자
/^\d{6}$|^\d{4}$/: 6자리 숫자 또는 4자리 숫자
*/
function solution(s) {
let regex = /^\d{6}$|^\d{4}$/;
return regex.test(s);
}
프로그래머스 문제들의 자바스크립트 풀이가 궁금하신가요? 아래 링크를 클릭해보세요!
https://programmers-solution-bank.netlify.app/
'코딩테스트 대비' 카테고리의 다른 글
[Programmers] Level1 - 문자열 내 p와 y의 개수(JavaScript) (0) | 2022.04.16 |
---|---|
[Programmers] Level1 - 문자열 내림차순으로 배치하기(JavaScript) (0) | 2022.04.16 |
[Programmers] Level1 - 소수 찾기(JavaScript) (0) | 2022.04.16 |
[Programmers] Level1 - 2016년(JavaScript) (0) | 2022.04.07 |
[Programmers] Level1 - 시저 암호(JavaScript) (0) | 2022.04.07 |
Comments