본문 바로가기
Algorithm

[프로그래머스] 문자열 다루기 기본 (JS, Python)

by YGSEO 2021. 1. 30.
728x90

JS

function solution(s) {
    let pattern = /\d+/;
    
    if (s.match(pattern)===null) return false

    let l = s.match(pattern)[0].length;

    if (l === s.length) {
        if (l === 4 || l === 6 ) {
            return true
        } else return false
    } else return false

}
function solution(s) {
    let regex = /^\d{6}$|^\d{4}$/;
    return regex.test(s);

}

아래 파이썬 솔루션과 비슷하지만 다른점은 ^와 $를 사용해서 문자열의 처음과 끝을 지정하는 방식인데,

JS 에서는 regex 표현을 ^와 &를 둘다 사용해야 한다는 점.

 

 

javascript.info/regexp-anchors

 


python

import re

def solution(s):

    l = re.sub('\D',"", s) # regex, replace string, string to change
    # non-numeric element is reduced to "".
    # s = a1234 ==> s = 1234

    if len(l) == 0: # s is all the string
        return False
    else:
        if len(l) == len(s):
            
            if (len(l) == 4) | (len(l) == 6) :
                return True
            else:
                return False
        else:
            return False

 

[자주 사용하는 문자 클래스] 출처: wikidocs.net/4308

[0-9] 또는 [a-zA-Z] 등은 무척 자주 사용하는 정규 표현식이다. 이렇게 자주 사용하는 정규식은 별도의 표기법으로 표현할 수 있다. 다음을 기억해 두자.

  • \d - 숫자와 매치, [0-9]와 동일한 표현식이다.
  • \D - 숫자가 아닌 것과 매치, [^0-9]와 동일한 표현식이다.
  • \s - whitespace 문자와 매치, [ \t\n\r\f\v]와 동일한 표현식이다. 맨 앞의 빈 칸은 공백문자(space)를 의미한다.
  • \S - whitespace 문자가 아닌 것과 매치, [^ \t\n\r\f\v]와 동일한 표현식이다.
  • \w - 문자+숫자(alphanumeric)와 매치, [a-zA-Z0-9_]와 동일한 표현식이다.
  • \W - 문자+숫자(alphanumeric)가 아닌 문자와 매치, [^a-zA-Z0-9_]와 동일한 표현식이다.

대문자로 사용된 것은 소문자의 반대임을 추측할 수 있다.

 

Other solution by Python

def alpha_string46(s):
    import re
    return bool(re.match("^(\d{4}|\d{6})$", s))

^와 $는 문자열의 처음과 끝을 의미. \d는 숫자를 의미, {4}|{6}은 숫자가 4번 혹은 6번 반복되는 것을 찾는 거구요, 결과를 bool로 true/false로 리턴하게 하는 코드

 

728x90

댓글