반응형

 

출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges

 

 

 

** Javascript

 

 

 

1)

 

맨 처음 제출했던 풀이

 

function solution(s) {
    return (s.length === 4 || s.length === 6) && s.replace(/[0-9]/g, "") === "";
}

 

 

 

2) 

 

replace 안 써도 된다.

 

function solution(s) {
    return (s.length === 4 || s.length === 6) && !s.match(/[a-zA-Z]/g);
}

 

 

3) 

 

test 사용

 

function solution(s) {
    return (s.length === 4 || s.length === 6) && !/[a-z]/i.test(s)
}

 

 

 

주의: Number 나 parseInt 를 사용하려 했더니 Number("e") 와 parseInt("e") 의 경우 숫자로 변환해준다고 한다.

 

 

 

 

 

** Java

 

1)

 

import java.util.regex.Pattern;
class Solution {
    public boolean solution(String s) {
        return (s.length() == 4 || s.length() == 6)  && Pattern.matches("^[0-9]*$", s);
    }
}

 

 

2)

 

정규식으로 글자수 제한까지 매치하는 경우

 

import java.util.regex.Pattern;
class Solution {
    public boolean solution(String s) {
        return Pattern.matches("^[0-9]{4}|{6}$", s);
    }
}

 

 

 

 

1등 추천 풀이는 try-catch 를 썼다

 

class Solution {
  public boolean solution(String s) {
      if(s.length() == 4 || s.length() == 6){
          try{
              int x = Integer.parseInt(s);
              return true;
          } catch(NumberFormatException e){
              return false;
          }
      }
      else return false;
  }
}

 

 

 

** Python

 

 

import re
def solution(s):
    return (len(s) == 4 or len(s) == 6) and s.isdigit()
반응형

+ Recent posts