노트 :

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

Algorithm

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

IT_달토끼 2022. 9. 28. 12:02

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

 

프로그래머스

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

programmers.co.kr

[문제 설명]

 

문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요.

예를 들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다.

 

[제한 사항]

  • s는 길이 1 이상, 길이 8 이하인 문자열입니다.
  • s는 영문 알파벳 대소문자 또는 0부터 9까지 숫자로 이루어져 있습니다.

[입출력 예]

s return
"a234" false
"1234" true

[내가 푼 방법]

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

1. 주어진 문자열 s의 길이가 4 또는 6인지 체크한다.

 

2. s를 int로 형변환하였을 때, 오류가 없다면 True 값인 answer를 반환한다.

    이때, s가 숫자가 아니라면 오류가 날 것이기 때문에 try ~ except 구문으로 처리한다.

 

3. 처음의 if 조건문이 참이 아니라면 무조건 False를 반환하도록 한다.

 

[마음에 든 방법]

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

나와 같은 로직인데 깔끔하다.

 

1. 문자열 s를 형변환한다.

 

2. 오류가 나면 False를 반환한다.

 

3. try ~ except 구문을 빠져나왔으면, s의 길이가 4 또는 6인지 확인한다.

 

같은 로직을 적용해도 어느 순서로 적용하는 지, 로직 상 필요없는 부분은 없는 지 체크하는 것이 중요한 것 같다.

 

[기타 방법]

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

한 줄로 코드를 작성하였다.

 

1. 문자열 s에 isdigit 함수를 적용하여 숫자로 변환 가능한 지 확인한다.

 

2. 포함연산자를 이용하여 s의 길이가 4또는 6인지 확인한다.

 

코드가 깔끔하고 이해하기 쉬우며, 속도도 빠르다.