📚코딩테스트/🧑🏻‍💻Python

[Level 1] 문자열 다루기 기본

와이드윤 2020. 12. 10. 15:59
728x90
문제 설명

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

제한 사항
  • s는 길이 1 이상, 길이 8 이하인 문자열입니다.
입출력 예
s return
a234 false
1234 true
풀이

처음 접근방법은 이랬다.

for loop를 돌려서 s의 모든 요소의 type이 int일 경우 true, 아닐 경우 false를 return한다.

접근 방법은 맞았으나 사용한 함수가 잘못되었다.

type함수를 써서 계속 코드를 짜봤는데 계속 안돼서 구글링 하던 중에 isdigit()을 알게되었고, isdigit을 쓰니 잘 작동했다.

def solution(s):
    for i in s:
        if (len(s) == 4 or len(s) == 6) and s.isdigit():
            return True
        else:
            return False

len ~에서 ()를 씌우지 않으면 오류가 발생해 len이 4나 6이고 digit일 경우의 조건을 걸어주었다.

다른 사람의 풀이
더보기
def solution(s):
    import re
    return bool(re.match("^(\d{4}|\d{6})$", s))
  • 정규표현식을 쓰리라곤 생각도 못했다.. 충격
def solution(s):
    return s.isdigit() and len(s) in (4, 6)
  • in을 쓸 줄도 생각 못함.. 세상은 넓고 천재는 많다.

 

728x90