문자열 다루기 기본
문제 설명
문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수,
solution
을 완성하세요. 예를 들어 s가 "a234"이면False
를 리턴하고 "1234"라면True
를 리턴하면 됩니다.제한 사항
- s는 길이 1 이상, 길이 8 이하인 문자열입니다.
- s는 영문 알파벳 대소문자 또는 0부터 9까지 숫자로 이루어져 있습니다.
입출력 예
s return "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()
이 가장 포괄적이고 isdecimal()
이 가장 제한적이라고 할 수 있다. isdecimal()
은 해당 문자열이 0~9의 int 형태로 이루어진 것인지를 검사한다. isdigit()
은 숫자인지를 검사한다. 예를 들어, 3²
도 isdigit()
에서는 true
다.
그렇다면 isnumeric()
은? isdigit()
보다 더 많은 케이스를 숫자로 쳐준다. 예를 들어 ½
같은 수도 true
로 반환해줌.
코딩테스트 준비 수준에서는 isdigit()
정도까지만 사용해도 충분하기에 다들 isdigit()
을 쓰는 것 같다.