알고리즘

[프로그래머스 lv 1] 문자열 다루기 기본.py

파뱁 2022. 1. 24. 20:51
728x90

<문제 설명>

https://programmers.co.kr/learn/courses/30/lessons/12918

 

코딩테스트 연습 - 문자열 다루기 기본

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

programmers.co.kr

문자열의 길이가 4또는 6이고 문자열이 전부 숫자로 되어있으면 true, 아니라면 false를 반환하는 문제이다.

 

입출력의 예는 다음과 같다.

s return
"a234" false
"1234" true

 

<문제 해결 아이디어>

일단 길이로 첫번째 조건문을 만들고 숫자인지 판별하는 것으로 두번째 조건문을 만든다.

문제 자체는 쉬우나 사용 함수를 익히기 위해 포스트를 작성해보았다.

여기서 사용하는 핵심 함수는 다음과 같다.

문자열.isdigit() : 문자열이 숫자의 형태이면 True_지수 가능
문자열.isnumeric() : 문자열이 숫자값에 해당하는 문자열이면 True_분수, 지수 가능
문자열.isdecimal() : 문자열이 int형으로 변환 가능하면 True

이번 문제에서는 숫자의 형태면 true를 반환하는 isdigit()을 사용했다.

보통은 int형인지 검증하는 경우가 많으므로 isdecimal()을 더 자주 사용할 것 같다.

isdecimal( ) ⊆ isdigit( ) ⊆ isnumeric( ) 이런 포함관계를 가지고 있으니 참고하면 좋을 것 같다.

 

다루는 김에 문자열 판별과 숫자+문자열 판별도 정리하자면 다음과 같다.

문자열.isalpha() : 문자열이 알파벳으로만 구성되어있으면 True, 공백문자가 하나라도 있으면 False
문자열.isalnum() : 문자열이 (알파벳 or 숫자_둘중에 하나만 있어도 True) 로만 구성되어있으면 True, 공백문자 하나라도 있으면 False 

 

<문제 풀이 코드>

def solution(s):
    answer = False
    if len(s) == 4 or len(s) == 6:
        if s.isdigit(): 
            answer = True
    return answer

채점 결과

 

728x90
반응형