Slow is better than NOTHING

Programmers 풀이/[LEVEL 1]

[Python] 프로그래머스 - 문자열 다루기 기본

Jeff_Kang 2019. 10. 14. 16:29
반응형

문제 설명

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

제한 사항

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

입출력 예

s return
"a234" false
"1234" true

 


문제는 상당히 직관적입니다. 주어진 문자열에서 숫자만 있어야하며 출력 결과는 True/False 입니다.

출력 결과가 True/False 인 경우, 단순한 논리 연산을 통해 한 줄 코딩을 할 수도 있겠지만, 

문제 접근과 코드 설명을 위해 풀어서 적도록 하겠습니다.

먼저, 제한 조건이 적혀있지 않지만 문제에 제한 조건이 명시되어 있습니다.

길이는 4 또는 6, 문자열에 숫자만 포함.

저는 이 문제에서 파이썬에서 제공되는 아주 좋은 메소드인 'isdigit()' 를 사용할 것입니다.

isdigit는 문자를 검사하여 digit(숫자) 인지를 검사해주는 메소드인데, 이 메소드를 지원해주지 않는 언어에서도 간단히 아스키코드를 이용하여 구현할 수 있습니다.

for i in range(len(s)):
	if not s[i].isdigit():
            return False
    return True

위 코드는 문자열 s에 대해 앞에서부터 순차 탐색을 통해 숫자인지 검사해주는 코드입니다.

모든 문자열을 검사한 후, 문자가 있었다면 return False 가 실행되고 숫자로만 이루어졌다면 반복문을 모두 실행 한 후 True가 출력될것입니다.

이제 이 코드에 문자열 길이를 4 또는 6으로 제한 시켜주는 코드를 삽입해주면 끝입니다.

최종 코드는 아래와 같습니다.

 

def solution(s):
     if len(s) == 4 or len(s) ==6:
        for i in range(len(s)):
            if not s[i].isdigit():
                return False
        return True
    else :
        return False
반응형