daily

23.04.14. programmers 코딩테스트 문제 풀기[0]

Juhyuck 2023. 4. 15. 00:36
728x90

쉬운 것 부터 풀고 있었는데 여기서 잠시 막혔다.

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

[제한 사항]s는 길이 1 이상, 길이 8 이하인 문자열입니다.s는 영문 알파벳 대소문자 또는 0부터 9까지 숫자로 이루어져 있습니다.

처음에는 아래처럼 단순하게 4자리와 6자리를 if문으로 판단하고, isNaN으로 삼항연산자를 사용하면 끝일거라 생각했는데, 왠걸 여러 테스트케이스에서 에러가 났다.

 

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

 

한시간 고민하다.. 도저히 모르겠어서 다른 풀이를 보니, 지수 표현식의 e를 사용할 경우 숫자로 인식해서 true가 리턴되는 것.

 

그래서 스프레드 문법으로 e나 E를 검사하는 것을 아래처럼 추가해서 통과했다.

function solution(s) {
    if (s.length !== 4 && s.length !== 6) { return false }
    if ([...s.toUpperCase()].includes('E')) { return false }
    return isNaN(s) ? false : true
}

사소해 보이지만 현업에서도 이런 문제로 에러가 발생하고 디버깅을 한참하는 일이 가끔 있지않을까? 하는 생각을 했다.