포시코딩

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

자료구조알고리즘/문제풀이

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

포시 2022. 12. 22. 10:08
728x90

문제

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

내 풀이

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

숫자 문자 변형 문제는 최근에 try-except문을 자주 쓰고 있는데 더 좋은 방법은 없을까? -> 파이썬 isdigit()을 통해 숫자 판별 가능

그리고 문제에서 문자열 s의 길이가 4 혹은 6이랬는데 왜 조건에는 

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

이게 있는걸까 생각하다가 제출할 때 테스트 몇개를 틀렸는데, 말 그대로 s가 4 혹은 6이 아니면 False를 리턴하라는 말이었다..

문제를 있는 그대로 받아들이자

 

다른 풀이 A

def alpha_string46(s):
    return s.isdigit() and len(s) in (4, 6)

str.isdigit()을 통해 풀었다.

isdigit()은 안에 모든 문자가 '숫자'로만 이루어져 있으면 True를 반환하고

단 하나라도 '문자'가 있으면 False를 반환한다고 한다. 

다만, 실수나 음수는 판단하지 못하니 주의

 

다른 풀이 B

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

정규표현식으로 풀이한 방법.

정규표현식을 공부해야 될텐데..으

728x90