728x90

[프로그래머스] 문자열 다루기 기본
문제 설명
문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인 해주는 함수, solution을 완성하세요, 예를 들어
s가 "a1234" 이면 False를 리턴하고 1234라면 True를 리턴하면 됩니다.
제한 사항
- s의 길이는 1이상, 길이 8 이하인 문자열입니다.
입출력 예
| s | return |
| "a234" | false |
| "1234" | true |
정규표현식을 이용한 풀이법
function solution(s) {
return (s.length === 4 || s.length === 6) && /^[0-9]+$/.test(s);
}
- test() 메서드는 주어진 문자열이 정규 표현식에 만족하는지 판별하고, 그 여부를 true 또는 false로 반환한다.
1. ^ : 시작
2. [0-9]: 0 ~ 9 까지의 숫자
3. + : 반복, 앞의 문자가 1개 이상인 경우
4. $: 종료
/^[0-9]*$/ 가 숫자만 있는지 확일할때에 가장 많이 쓰는 방법이다.
멘토님 풀이법
function solution(s) {
// s의 length 값이 아니거나 6이 아닐때 false 값 리턴
if (s.length !== 4 && s.length !== 6) {
// && /^[0-9]+$/.test(s)
return false;
};
let answer = true;
for (let i = 0; i < s.length; i++) {
// 반복물 돌릴때 숫자나 문자가 아니면 length 값을 false로 return
// console.log(s[i]);
// Number 타입으로 s의 i 값으로 변경
// 해당 데이터는 숫자 타입이 아니다.
// console.log(isNaN(s[i]))
// if 문 처리
if (isNaN(s[i]) === true ) {
// 나라도 false일때 문제발생
answer = false;
break;
}
}
// true 라면 answer 리턴 // true 로도 가능
return answer;
}
멘토님의 풀이법
function solution(s) {
// s의 length 값이 아니거나 6이 아닐때 false 값 리턴
if (s.length !== 4 && s.length !== 6) {
// && /^[0-9]+$/.test(s)
return false;
};
// 반복문을 돌려 isNan이 true를 나타내는 데이터면 배열로 남기고 return 할때 배열이 비워있으면
// 문자데이터가 없고 하나라도 있다면 있다는 뜻
// 필요한 메서드만 거르는 filter
// 문자열을 배열로 쪼개주는 메서드 = split
const answer = s.split("")
.filter (num => {
// num에 데이터가 맞는 것
// 숫자 데이터가 아닌 문자 데이터만
// isNaN의 결과가 true 값인 데이터만 남기게됨
return isNaN(num)
})
console.log(answer);
// answer 의 length 값이 0인지 대입
return answer.length === 0
}
// let answer = true;
// for (let i = 0; i < s.length; i++) {
// // 반복물 돌릴때 숫자나 문자가 아니면 length 값을 false로 return
// // console.log(s[i]);
// // Number 타입으로 s의 i 값으로 변경
// // 해당 데이터는 숫자 타입이 아니다.
// // console.log(isNaN(s[i]))
// // if 문 처리
// if (isNaN(s[i]) === true ) {
// // 나라도 false일때 문제발생
// answer = false;
// break;
// }
// }
// // true 라면 answer 리턴 // true 로도 가능
// return answer;
// }
참고링크
https://habitual-history.tistory.com/3
[프로그래머스] 문자열 다루기 기본 | javascript
문제설명 문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다. 제한사항 s
habitual-history.tistory.com
'프론트 엔드 > Javascript' 카테고리의 다른 글
| [JS] JS와 TS의 차이점 (0) | 2022.01.20 |
|---|---|
| [javascript] map,filter,every 함수 (0) | 2022.01.18 |
| [프로그래머스 알고리즘] 같은 숫자는 싫어 (0) | 2022.01.17 |