Altiora Petamus

문자열 다루기 기본 본문

1day-1algorithm

문자열 다루기 기본

Haril Song 2021. 7. 2. 09:44
 

코딩테스트 연습 - 문자열 다루기 기본

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

programmers.co.kr

🤔생각해보기

문제는 추가적인 부연 설명이 필요없을 정도로 아주 간단하므로 바로 풀이로 넘어가보자.

정규식

import re


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

최종 결과를 Boolean 으로 return 해야하므로 bool() 을 사용해서 변환해준다.

중요한 건 내부 정규식인데, 구체적으로 설명하면 아래와 같다.

  • ^ : 시작 문자
  • & : 마지막 문자
  • () : Group 설정
  • \d : 모든 숫자만, [0-9] 와 같다.
  • {n} : n개만
  • | : or 연산자
  • r : raw string, 백슬래시 문자를 해석하지 않고 남겨둔다.

문자열을 다루는 문제인만큼 정규식을 활용하는 방법 쪽을 개인적으로 더 선호하는 편이다.

내장함수 isdisit()

def solution(s):
    return s.isdigit() and len(s) in (4, 6)

s 가 숫자인지, 길이가 4 또는 6 을 동시에 만족하는지 체크한다. (끝...)

주의할 점은 isdisit() 는 하나의 문자를 확인할 때도 쓸 수 있지만, 이 함수는 문자열 전체를 확인한다.

"123a45".isdisit()  # False
"12345".isdisit()  # True 

그러므로 굳이 반복문으로 풀어서 스펠링 체크하듯이 쓰지 않아도 된다.


JavaScript 풀이

function solution(s) {
  return /^[0-9]+$/.test(s) && [4, 6].includes(s.length);
}

정규식과 조합하여 해결하는 풀이법이다. 문법만 약간 다를 뿐 파이썬 풀이와 내용은 같다.

'1day-1algorithm' 카테고리의 다른 글

추석 트래픽  (0) 2021.07.08
벽 부수고 이동하기  (0) 2021.07.05
Tape Equilibrium  (0) 2021.07.01
소수 찾기  (0) 2021.06.29
베스트 앨범  (0) 2021.06.26