관리 메뉴

솜씨좋은장씨

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

Programming/코딩 1일 1문제

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

솜씨좋은장씨 2021. 2. 13. 00:32
728x90
반응형

코딩 1일 1문제!

오늘의 문제는 프로그래머스의 문자열 다루기 기본입니다.

 

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

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

programmers.co.kr

Solution 1

import re

def solution(s):
    answer = False
    
    re_s = re.sub("[0-9]",'',s)
    
    if re_s == '':
        if len(s) in [4, 6]:
            answer = True
    
    return answer

Solution 1 풀이

문자열의 길이가 4또는 6이고 숫자로만 구성되어있는지 확인하는 것이므로

먼저 정규식을 활용하여 s에서 숫자를 제거한 re_s를 만들어줍니다.

숫자를 제거한 re_s가 '' ( 빈 문자열 ) 이면서 원래 s의 길이가 4또는 6일 경우 정답을 True로 아닐경우 False로 합니다.

Solution 2

def solution(s):
    answer = True
    
    if len(s) in [4, 6]:
        for i in range(len(s)):
            if not s[i].isdigit():
                answer = False
                break
    else:
        answer = False
    
    return answer

Solution 2 풀이

이번엔 정규식을 사용하지 않고 기본으로 제공되는 isdigit()이라는 함수를 활용해보았습니다.

먼저 s의 길이가 4또는 6일 경우 문자열 속 각 문자를 탐색하면서 숫자가 아닌 문자가 있는지 확인합니다.

만약 숫자가 아닌 문자가 있을 경우 정답은 False 로

s 의 길이가 4 또는 6이면서 숫자인 문자만 발견되면 True로 그렇지 않은 경우는 모두 False로 합니다.

속도 면에서는 정규식을 사용하지 않은 Solution이 더 빠르게 동작하는 것을 볼 수 있었습니다.

 

SOMJANG/CODINGTEST_PRACTICE

1일 1문제 since 2020.02.07. Contribute to SOMJANG/CODINGTEST_PRACTICE development by creating an account on GitHub.

github.com

Comments