[코딩테스트] 프로그래머스 - 문자열 다루기 기본

Jenna·2023년 3월 21일
0

Programmers

목록 보기
2/7
post-thumbnail

문자열 다루기 기본

문제 설명

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

제한 사항

  • s는 길이 1 이상, 길이 8 이하인 문자열입니다.
  • s는 영문 알파벳 대소문자 또는 0부터 9까지 숫자로 이루어져 있습니다.

입출력 예

sreturn
"a234"false
"1234"true

⭐처음에 구현한 코드

def solution(s):    
    if s.isnumeric() and (len(s) == 4 or len(s) == 6):
        return True
    else:
        return False

간단한 문제라서 한번에 맞았다! 따라서 오답노트는 없음~ ・ᴥ・ ~

isnumeric() 함수로 해당 문자열이 숫자인지 판단하고, len(s)가 4 or 6일때만 True를 반환하도록 했다.


🤓다른 코드

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

이건 정규식을 사용해서 풀었길래 신기해서 넣어봄!

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

난 이렇게 한 줄로 코드를 짠 사람들을 볼때마다 갈 길이 멀다고 느낀다... 🥲
isnumeric() 이랑 isdigit() 중 사람들은 isdigit() 을 더 많이 쓰는 것 같던데 이유가 있을까?


📚추가공부

isnumeric(), isdigit(), isdecimal() 의 차이?

간단하게 말해서 isnumeric()이 가장 포괄적이고 isdecimal()이 가장 제한적이라고 할 수 있다. isdecimal()은 해당 문자열이 0~9의 int 형태로 이루어진 것인지를 검사한다. isdigit()은 숫자인지를 검사한다. 예를 들어, isdigit()에서는 true다.
그렇다면 isnumeric()은? isdigit()보다 더 많은 케이스를 숫자로 쳐준다. 예를 들어 ½같은 수도 true로 반환해줌.

코딩테스트 준비 수준에서는 isdigit() 정도까지만 사용해도 충분하기에 다들 isdigit()을 쓰는 것 같다.

profile
FE/Game Dev.

0개의 댓글