https://school.programmers.co.kr/learn/courses/30/lessons/12918
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명
문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다.
제한 사항
- s는 길이 1 이상, 길이 8 이하인 문자열입니다.
- s는 영문 알파벳 대소문자 또는 0부터 9까지 숫자로 이루어져 있습니다.
입출력 예
s | return |
"a234" | false |
"1234" | true |
해결 방법
처음엔 s를 숫자로 바꾸고 isNaN을 이용해서 ture이면 false를 리턴하게 하고, 그 당므에 길이가 4, 6일 땐 true를 아닐 땐 false를 리턴하게 했다. 하지만 문자가 포함되어 있어도 숫자로 변환될 수 있는 것들이 있다.
8진법 0o77 => 10진법 63
16진법 0xff => 10진법 255
지수표기법
21e6 => 21000000
이런 식으로 변환이 가능한 경우 isNaN을 이용하면 문자가 포함되어 있는데도 NaN이 아니어서 false가 되기 때문에 오류가 나게 된다. 그래서 반복문을 통해 한 글자씩 변환하여 판별하는 방법을 사용했다.
1. 반복문을 돌면서 숫자로 변환했을 때 NaN이면 false를 리턴한다.
2. NaN이 아닌 값들 중에서 문자열의 길이가 4 혹은 6인 경우 true를 아닌 경우 false를 리턴한다.
전체 코드
function solution(s) {
const arrS = s.split("");
for(let i = 0; i<s.length; i++){
if(isNaN(parseInt(s[i], 10))) return false;
}
return s.length === 4 || s.length === 6 ? true : false;
}
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[JavaScript] 프로그래머스 level1 #예산 (0) | 2022.10.08 |
---|---|
[JavaScript] 프로그래머스 level1 #최대공약수와 최대공배수 (0) | 2022.10.05 |
[JavaScript] 프로그래머스 탐욕법 #조이스틱 (0) | 2022.09.16 |
[JavaScript] 프로그래머스 완전탐색 #피로도 (0) | 2022.09.16 |
[JavaScript] 프로그래머스 정렬 #가장 큰 수 (1) | 2022.09.16 |
https://school.programmers.co.kr/learn/courses/30/lessons/12918
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명
문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다.
제한 사항
- s는 길이 1 이상, 길이 8 이하인 문자열입니다.
- s는 영문 알파벳 대소문자 또는 0부터 9까지 숫자로 이루어져 있습니다.
입출력 예
s | return |
"a234" | false |
"1234" | true |
해결 방법
처음엔 s를 숫자로 바꾸고 isNaN을 이용해서 ture이면 false를 리턴하게 하고, 그 당므에 길이가 4, 6일 땐 true를 아닐 땐 false를 리턴하게 했다. 하지만 문자가 포함되어 있어도 숫자로 변환될 수 있는 것들이 있다.
8진법 0o77 => 10진법 63
16진법 0xff => 10진법 255
지수표기법
21e6 => 21000000
이런 식으로 변환이 가능한 경우 isNaN을 이용하면 문자가 포함되어 있는데도 NaN이 아니어서 false가 되기 때문에 오류가 나게 된다. 그래서 반복문을 통해 한 글자씩 변환하여 판별하는 방법을 사용했다.
1. 반복문을 돌면서 숫자로 변환했을 때 NaN이면 false를 리턴한다.
2. NaN이 아닌 값들 중에서 문자열의 길이가 4 혹은 6인 경우 true를 아닌 경우 false를 리턴한다.
전체 코드
function solution(s) {
const arrS = s.split("");
for(let i = 0; i<s.length; i++){
if(isNaN(parseInt(s[i], 10))) return false;
}
return s.length === 4 || s.length === 6 ? true : false;
}
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[JavaScript] 프로그래머스 level1 #예산 (0) | 2022.10.08 |
---|---|
[JavaScript] 프로그래머스 level1 #최대공약수와 최대공배수 (0) | 2022.10.05 |
[JavaScript] 프로그래머스 탐욕법 #조이스틱 (0) | 2022.09.16 |
[JavaScript] 프로그래머스 완전탐색 #피로도 (0) | 2022.09.16 |
[JavaScript] 프로그래머스 정렬 #가장 큰 수 (1) | 2022.09.16 |