제목 어그로 지렸다.
유튜바 경력 어디안간다.
https://kong-dev.tistory.com/23?category=982997
또 이 문젠데
우리집 시니어가 이거 풀라면서 예외가 있으니까 잘 생각 해보랬다.
function solution(s) {
const arr = s.split('');
if (arr.length !== 4 && arr.length !== 6) {
return false;
}
for (let value of arr) {
if (isNaN(Number(value))) {
return false;
}
}
return true;
}
없는데여 그런거...
잘만 도는데여...
우리집 시니어 내 코드 보더니 역시 참신하단다.
뭐가 대체 나는 나일 뿐인걸
우리집 시니어가 처음 짰던 코드
function alpha_string46(s) {
return s.length == 4 || s.length == 6 ? !isNaN(s) : false
}
!!!
오메.... 내 코드 눈감아..
근데 이거 돌리니까 케이스 몇개 통과를 못시킨다.
뭐지... 완벽한거 아닌가..
아무리 생각해도 모르겠는데
정답은 지수형태, 16진수형태, 8진수형태 란다.
뭔데요 그게;;
가끔 계산기 갖고 장난치다가
중간에 숫자가 아니라 E들어가있는거 본적이 있는데
난 이제껏 그거 Error 줄 알았다.
너무 길어서 Error 띄운건줄 알앗는데
그게 아니라
지수 형태란다.
뭔가 싶어서 찾아봤는데 봐도 모르겠다
뭐 자연상수 뭐 그런거란다 그런가보다
미친;;
16진수는 0x13 같이 중간에 x가 들어간 형태
8진수는 0o13같이 중간에 o가 들어간 형태
문제는 얘네를 숫자로 인식 한다는 거다.
https://kong-dev.tistory.com/24
여기서 한번 정리했지만
string에다가 isNaN을 돌리면
true가 나온다.
isNaN 내부에 Number 같이 number로 변환해주는 코드가 있나보다.
근데 위에 있는
1e23, 0x13, 0o13같이 생긴애들은
쟤네를 문자열로 바꿔서
Number를 돌리면 NaN이 나오질 않는걸 확인할 수 있다.
결국 쟤네를 숫자로 인식 한다는 거다.
console.log(Number('1e23')) // 1e+23
console.log(Number('0x13')) // 19
console.log(Number('0o13')) // 11
console.log(isNaN('1e23')) // false
console.log(isNaN('0x13')) // false
console.log(isNaN('0o13')) // false
솔직히 쟤네가 왜 19고 왜 11인지는 모르겠다.
그냥 숫자를 표현하는 방식에는 저런게 있구나.. 로 퉁치고 넘어가고 싶다.
비전공 + 문과 는 저런거 모른다..ㅎ
아 내가 짠 코드는 문자열을 하나 하나 뜯어서
isNaN을 돌리고 true 또는 false 를 리턴하기때문에
저런 얄팍한 술수에 걸리지 않는다.
그니까 1e23이면
1 isNaN 돌리고, e isNaN돌리고.. 반복
그럼 e isNaN 에서 true 가 뜨겠지
if 조건문 안에 넣어놔서 true 뜨면 바로
false 리턴하게 해놔서
저런 잡다구리에 걸리질 않는다.
헿
의도했냐고?
ㅎㅎㅎ..그럴리가...
'Study > JavaScript' 카테고리의 다른 글
내 애착 메소드 Array.from 으로 표 만들기 (0) | 2021.12.03 |
---|---|
Number() 와 parseFloat() 그리고 킹받는 8진법 (0) | 2021.11.29 |
프로토타입의 교체. (0) | 2021.11.29 |
includes로 NaN을 확인 할 수 있을까? (0) | 2021.11.24 |
타입변환 (0) | 2021.11.22 |
댓글