Algorithm | 문자열 다루기 기본

권기현·2021년 3월 21일
0

Algorithm

목록 보기
7/20
post-thumbnail

프로그래머스 Lv1

문제 설명

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

제한 사항

s는 길이 1 이상, 길이 8 이하인 문자열입니다.

입출력 예

sreturn
"a234"false
"1234"true

1차 시도

function solution(s) {
    for(let i = 0; i < s.length; i++){
      let stringToInt = s.charAt(i)*1;
      if(isNaN(stringToInt)){
        return false;
      }
    }
    return true;
}

문제점 1
: 문제를 흘려서 봄
문제가...."문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수"
조건 하나도 그냥 보지 말자...!! 4,6을 구별해주는 기능을 넣지 않았다.

문제점 2
: 인자들어오는 s자체를 검사해도 되는데 왜 굳이 for문을 돌렸을까?
또 필요없는 연산을 함.

2차 시도

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

!??!??!?! 왜지!??!
위처럼 풀었는데 테스트 케이스 11번 걸렸습니다.
아마 소수점 표현 "0.01" 이나 "1e22" 같은 지수 표현이 문제가 생긴다고 함.
출처 | [프로그래머스]문자열 다루기 기본

📌최종결과

function solution(s) {
    if( s.length === 4 || s.length === 6){
        return s.split("").every((char)=>!isNaN(char))
    }
    return false;
}

- Array.every()

arr.every( callback [, thisArg] )

매개변수

  • callback
    각 요소를 시험할 함수. 다음 세 가지 인수를 받습니다.

    • currentValue
      : 처리할 현재 요소.
    • index ( Optional )
      : 처리할 현재 요소의 인덱스.
    • array ( Optional )
      : every를 호출한 배열.
    • thisArg ( Optional )
      :callback을 실행할 때 this로 사용하는 값.
  • 반환 값
    ✅ callback이 모든 배열 요소에 대해 참(truthy)인 값을 반환하는 경우 true, 그 외엔 false.

다른 풀이에는 정규표현식을 써서 푼 코드가 많았다! 정규표현식도 꼭 3월안에 공부를 해야겠다!

profile
함께 일하고 싶은 개발자를 목표로 매일을 노력하고, 옷을 좋아하는 권기현 입니다.

0개의 댓글