티스토리 뷰

728x90
반응형

오늘은 프로그래머스의 문자열 다루기 기본을 풀이과정을 적어보려고 한다.

프로그래머스는 난이도 조절이 너무 애매한 것 같다...

 

 

 

1. 문제 설명

문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다.

 

2. 제한 사항

  • s는 길이 1 이상, 길이 8 이하의 문자열입니다.

3. 입출력 예

s return
"a234" false
"1234" true

 

4. solution.js

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

 

사실 처음에는 이렇게 하였다.

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

isNaN이라는 함수로 문자열인지 숫자인지를 판별하는 것이다. 

그래서 이거면 될 줄 알았다. 그리고 코드 실행 시 완료되었지만 제출 후 채점하기에서 오류가 발생하였다.

왜...??

그렇다고 정확도가 문제는 아니였다.

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

근데 왜 다른 풀이한 사람들은 "=="가 아닌 "==="를 했을 까?

그리고 if문을 살짝 수정하였다. 4 혹은 6의 길이가 안되었을 때 false값을 넣도록 추가하였다.

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

이렇게 했더니 딱 한 개가 문제가 발생하였다. 테스트 11번...

이유를 찾아보았다. 여기서 생기는 문제점은 지수 형식을 넣었을 경우 문제가 발생한다고 한다.

지수함수 = 거듭제곱 이 부분이 문제라는 것인데... 아직까지는 이해가 좀 어려웠다.

그래서 다른 함수를 찾아보았다. isNaN을 대신할 방법으로 그래서 찾았다.

 

 

 

사실 엄청 쉬워 보였지만, 생각보다 쉽지 않은 코드였다. 아직은 지수함수, 정규식 표현이 낯선 필자에게는

다음에 다시 한번 공부해야 할 코테로 자리 잡게 되었다.

이상 여기까지 프로그래머스 코딩 테스트를 마치도록 하겠다.

728x90
반응형
댓글
250x250
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함