본문 바로가기

개발자의 logs

문자열 다루기 기본 - 자바스크립트 본문

공코딩/알고리즘

문자열 다루기 기본 - 자바스크립트

주인장v 2022. 5. 14. 17:53

 

 

https://programmers.co.kr/learn/courses/30/lessons/12918

 

코딩테스트 연습 - 문자열 다루기 기본

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

programmers.co.kr

 

 

문제 설명

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

제한 사항
  • s는 길이 1 이상, 길이 8 이하인 문자열입니다.
입출력 예sreturn
"a234" false
"1234" true

 

해설 

 

이 문제는 해석이 어려웠다. 처음엔 4 혹은 6인 부분과 , 숫자인 부분을 따로 나눠서 생각했었는데 알고보니 교집합형 문제였다. 그 안에 속하는 또 다른 조건이라는 뜻이다. 

 

우선 s.length를 통해서 4 또는 6인지 체크해주었고, 조건문을 또 추가하고 isNaN()함수를 통해 숫자로만 이루어져 있는지 확인했다.

 

참고로 isNaN은 숫자면 false를 반환한다. 숫자라면 안에 e가 포함되있는지  추가적으로 다시 확인한다.

 

왜냐면 지수함수 표시형으로 e가 들어가 있을 수 있기 때문이다 ( 테스트 케이스 11에서 걸린다)

 

결국 isNaN으로 온전히 거를수는 없기 때문!

 

제출했을때 undifined가 많이 떴는데, 각 조건문 끝에 아닌경우는 return false를 추가하니 해결되었다.

 

결국 3중 조건문이 되었는데 차차 학습하면서 코드를 다듬어가는 연습을 해야겠다

 

코드

 

 

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

}
Comments