2차 공부/알고리즘

문자열 다루기 기본

공대탈출 2024. 5. 31. 14:29

 

먼저 작성한 코드

function solution(s) {
    return (s.length===4 && !isNaN(Number(s))) ||(s.length===6 && !isNaN(Number(s)))
        ? true : false
}

11번 케이스에서 오류가 발생하였다.

이유를 모르겠어서 힌트를 보니, 지수표기법으로 들어오는 문자열을 js에서 숫자로 인식하기 때문에 발생한 오류였다.

예를들어 10e01 같은 수가 들어올 때에 대한 문제이다.

문제에서 "숫자로만 구성"이라는 제한조건이 있기 때문에 e같은 문자열의 경우 아예 예외를 두어야 한다.

 

후에 작성한 코드

function solution(s) {
    if (s.includes('e')) {
        return false
    } else {
    return (s.length===4 && !isNaN(Number(s))) ||(s.length===6 && !isNaN(Number(s)))
        ? true : false}
}

여기선 includes()를 사용하여 e만 판별해 내었지만, for문을 사용하여 문자열 인덱스마다의 값이 숫자인지 판별해 내는 것이 더 적절할 것 같다.

 

최종적으로 작성한 코드

function solution(s) {
    for (let i = 0; i<s.length; i++) {
        if (isNaN(Number(s[i]))) {
            return false;
            break;
        }
    }
    return (s.length===4 || s.length===6) && !isNaN(Number(s)) ? true : false
}

이렇게 완벽하게 인자의 예외처리를 해주어야 어떤 경우에도 정확히 반환하는 함수가 될 것이다.

'2차 공부 > 알고리즘' 카테고리의 다른 글

콜라문제  (0) 2024.06.05
시저암호  (1) 2024.06.04
자연수 뒤집기  (0) 2024.05.28
배열의 평균값  (0) 2024.05.27
짝수의 합  (0) 2024.05.27