본문 바로가기
Algorithm/Programmers

[Programmers] 문자열 다루기 기본(JavaScript)

by 백승전 2022. 3. 24.

 

알림

 

본 포스팅은 공부 목적으로 작성된 글이며 상업적 목적으로 절대 사용되지 않았음을 밝힙니다.

 

문제

 

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를 받아야 합니다. 근데 그 문자열의 길이가 4 혹은 6이라고 하니, 조건문을 통해 s의 길이가 4 혹은 6일 때를 다음 단계로 갑니다.

 

문자열에 숫자만 있는지 확인해야 합니다. isNaN() 함수를 사용합니다. isNaN() 함수는 매개변수가 숫자면 false, 숫자가 아니면 true를 출력합니다.

 

근데 이 문제에서는 isNaN() 함수를 사용하려면 숫자일 때 true를 return 해야 하니 기존 성격과 반대로 사용하기 위해 !isNaN()으로 사용하면 될 것 같습니다.

 

코드

 

function solution(s) {
    
    if (s.length === 4 || s.length === 6) { // 길이가 4 혹은 6이면 반복문
        return s.split('').every(a => !isNaN(a)); // 모두 숫자일 땐 여기서 true로
    }
    
    return false; // 길이 4 혹은 6 이외는 전부 false
}

 

풀이 그대로 문자열 s의 길이가 4 혹은 6일 때 함수가 실행됩니다. 문자열 s를 하나씩 나눈 다음에, 숫자인지 문자인지 비교하는 방향으로 개발을 하였습니다.

 

우선 기본적으로 false를 return 시키고, 문자열의 길이가 4 혹은 6인 애들의 한에서 split() 함수로 다 뜯어서 전부 숫자이면 true를, 하나라도 숫자가 아니면(= 문자열) false를 return 시키도록 코드를 작성했습니다.

 

isNaN() 함수는 앞서 말씀 드린 것처럼 매개변수가 숫자면 false를 반환하는데, !isNaN()으로 작성해 줌으로써 숫자일 때 true를 반환합니다. 그리고 every() 함수는 배열 중 하나라도 false이면 false를, 전부 true여야만 true를 반환하기 때문에, every() 함수로 감싸준 다음에, 그 안에서 하나하나 분할해서 숫자인지, 문자도 섞여 있는지 식별합니다.

 

노트

 

split()

every()

isNaN()

댓글