[매일코딩-프로그래머스] 문자열 다루기 기본 01, 02

2022. 1. 4. 10:39WEB Dev/CordingTEST

728x90

 

어제 문자열다루기를 분명 풀어서 글을 올린 것 같은데..! 없어졌다!

저장도 안되어있는거 보니 날린듯 ㅠㅠ

 


 

[문제] 문자열 다루기 기본

 

문자열의 길이가 4이거나 6이고, 숫자로만 구성되어있는지 확인하는 함수를 구현하면 된다.

주어지는 문자는 1개부터 8개의 글자로 이루어져 있고, 숫자와 문자가 혼합될 수 있다.

길이가 4이거나 6이고, 숫자로만 되어 있는 조건을 만족하면 true를 출력하면 된다.

 

 

 

 

 

 

[풀이]

 

우선 문자열의 길이가 1~8 인지 확인하는 조건문을 준다.

그리고 문자열의 길이가 4개이거나 6개이면 각각의 문자열이 숫자인지만 확인하면 된다.

 

먼저 문자열의 길이가 1~8개인지 확인하는 조건문은 다음과 같다.

우선 s.length 그러니까 주어지는 문자열 s 의 길이를 변수에 담고 해당 변수를 확인한다.

 

function solution(s) {
    var answer = true;
    var leng = s.length;
    
    if(leng >= 1 || leng <= 8){ // or  1 <= leng <= 8 
      

    }
    return answer;
}

 

 

 

그리고 내부에 길이가 4이거나 6인 경우의 조건문을 한 번 더 단다.

 

function solution(s) {
    var answer = true;
    var leng = s.length;
    
    if(leng >= 1 || leng <= 8){ // or  1 <= leng <= 8 
      
        if (leng == 4 || leng == 6){
            
        }
    }
    return answer;
}

 

 

그렇게 걸러진 문자열 (길이가 4이거나 6인) 을 split 문자열 메소드를 이용해 배열로 분리하고, 각각의 인덱스를 순회하면서 숫자인지 아닌지 구분한다.

 

각 글자가 배열로 분리될 때는 따옴표가 붙은 스트링 형태로 분리되는데, 이럴 경우 isNaN으로 숫자 여부를 확인한다. 문제는 숫자가 아닐 경우 true가 나오고 숫자인 경우에는 false가 나온다는 점이다.

 

 

 

그러면 '모든' 배열의 값들이 조건에 부합하는지 찾기 위해서는 every() 메소드를 써준다. (조건에 맞는 것만 찾으려면 some()을 쓸 수 도 있다.)

 

//every 쓰기 전 함수

function solution(s) {
    var answer = true;
    var leng = s.length;
    
    if(leng >= 1 || leng <= 8){ // or  1 <= leng <= 8 
      
        if (leng == 4 || leng == 6){
            var sArray = s.split('');
            sArray.forEach((v)=>{
                if(isNaN(v) == false){ return answer = true }
                return answer = false;
            })
            
        }
    }
    return answer;
}

 

 

//every

function solution(s) {
    var answer = true;
    var leng = s.length;
    
    if(leng >= 1 || leng <= 8){ // or  1 <= leng <= 8 
      
        if (leng == 4 || leng == 6){
            var sArray = s.split('');
            sArray.every((v) => {
                if(isNaN(v) == false){
                    return true
                } 
                if(isNaN(v) == true){
                    return false  
                }
            })
            
        }
    }
    return answer;
}

 

뭔가 every를 쓰면서 잘못된 것이 있나..?

다시 한 번 찾아봐야겠다...!

 

 


728x90