[프로그래머스]JAVASCRIPT- 8

김윤지·2022년 8월 14일
0

JAVASCRIPT

목록 보기
9/25


만만하게 덤빈 문제
근데 생각보다 생각할 게 있었고 의외로 간단하게 풀린 문제..!!!

처음에 생각한 방법은
for문과 if문으로 입력한 문자열의 자리에 숫자가 아닌 놈이 있으면
false를 반환하게 하면 되겠구나! 했는데 생각보다 잘 안됨

function solution(s) {
    var answer = true;

    for (i=0; i<9; i++) {
        for (j=0; j<s.length; j++) {
            if (s[j].includes(i)) {
                answer = true;
            } else {
                answer = false;
            }
        }
    }
    return answer;
}


이상하게 숫자가 아닌 문자가 들어있을 때에는 테스트를 통과하는데
숫자만 있을 때엔 통과가 안됨..
내 for문과 if문이 잘못된 걸 수도 있는데, 계속 바꿔봐도 안됨..
그래서 한 번 입력한 값을 Number로 바꿔보고 타입을 확인 해봄

console.log(Number(s));를 해보면
문자가 들어가면 NaN이 나오고, 숫자만 들어가면 1234 숫자로 출력됨
그래서 조건을 ''Number(s) === NaN''이면 문자열이 들어간 거니깐 false가 출력되게 했는데 대차게 실패. 왜 안됨? ㅡㅡ

그래서 typeof로 Number(s)를 출력해봤는데,

둘 다 numberd임... 웨....????????
그래서 멘붕해서 Number에 관한 문서를 막 찾아보다가
isNaN 함수 발견!!!!!!!!

입력한 값이 숫자로 변경될 수 있으면 false가 출력되고,
아니면 true가 입력된다고 한다... 이걸 이용해보자..!하고 만들었는데 성공~~

내 코드

function solution(s) {
    var answer = true;
    
    if(isNaN(s) === false) {
        answer = true;
    } else {
        answer = false;
    }
  
    return answer;
}

심지어 for문도 안쓰고 훨씬 간결하게.... 어이없었달꽈..??
암튼 잡스는 쉬운 개념이라고 대충 학습하고 넘어가면
이런 식으로 개념을 다시 찾아보면서 자괴감에 빠지게되는 듯...

그래도 일단은 성공~ 끝~~~
인줄 알았음 ㅡㅡ 제출해보니깐


어..? 너 뭐하는...????
열받아 다시 고민 시작

문제를 다시 봐보면 조건이 하나 더 있었다..

문자열 s의 길이가 4 혹은 6이고,

ㅋㅋ황당~!! 그래서 휘뚜루마뚜루 문자열 조건문을 딱 썼는데!

11번 오류...
이 때 부터 11번 오류가 계속 뜸......
뭘 테스트한건지 모르니까 도저히 모르겠어서 isNaN 버리기로 결심!
그래서 확실하게 정수를 반환해주는 ''parseInt'' 선택!

근데 이때도 isNaN 개념에 묶여있어서 조건문을 만들 때
if(parseInt(s) === true)로 계속 시도..
당연히 계속 11번 오류가 떠서 짜증 ㅠㅠ

그래서 다시 parseInt 개념을 확인확인..
보니깐 true랑 비교할 게 아니라 문자열인 s랑 비교해야했움ㅋㅋ
if(parseInt(s) == s)로 변경!

진짜 완성한 내 코드

function solution(s) {
    var answer = true;
    
    if (s.length === 4 || s.length === 6) {
        if (parseInt(s) == s) {
            answer = true;
        } else {
            answer = false;
        }
    } else {
        answer = false;
    }
    return answer;
}

열받았는데 점수는 왕많이 줌!
13점은 첨이야 ㅋㅋㅋㅋ

끝~~~

profile
Java, Javascript, python, DB

1개의 댓글

comment-user-thumbnail
2022년 8월 14일

parseInt() 불리언으로 비교하면 안되는 군요!! 많이 배워갑니다~

답글 달기