티스토리 뷰

1. 문제

문제 설명

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

제한 사항

  • s는 길이 1 이상, 길이 8 이하인 문자열입니다.

입출력 예

s return
a234 false
1234 true

 

2. 풀이 과정

"-2000" 이나 "23.9" 도 우리가 인식하기에는 숫자로 인식하지만 사실 "-" 와 "." 이라는 문자열이 섞여 들어간 것이기 때문

에 false가 나와야 한다. 따라서, float가 아닌 int를 실행했을 때 에러가 나지 않아야 한다.

def solution(s):
    if len(s) == 4 or len(s) == 6:
        try:
            num = int(s)
            return True
        except:
            return False
    else:
        return False

 

더 짧게 고치면 다음과 같이 고칠 수 있다.

def solution(s):
    try:
        num = int(s)
        return len(s) == 4 or len(s) == 6
    except:
        return False

 

3. 다른 사람의 풀이

문자열 길이를 판단하는 부분을 or이 아닌 in을 사용해서 처리한 점이 보고 배워야 할 점이라 생각한다.

def alpha_string46(s):
    return s.isdigit() and len(s) in (4, 6)
  • isdigit() : 문자열이 숫자로만 구성되어 있으면 True
    • 음수나 소숫점이 포함된 숫자는 False를 return
  • isalpha() : 문자열이 문자로만 구성되어 있으면 True

'Algorithm > Programmers' 카테고리의 다른 글

문자열 내림차순으로 배치하기  (0) 2020.04.18
핸드폰 번호 가리기  (0) 2020.04.18
같은 숫자는 싫어  (0) 2020.03.30
문자열 내 p와 y의 개수  (0) 2020.03.30
나누어 떨어지는 숫자 배열  (0) 2020.03.30
댓글