2019년 2월 2일 토요일

#12 알고리즘연습- 문자열다루기 - PYTHON


문자열다루기 


문제 설명
문자열 s의 길이가 4혹은 6이고, 숫자로만 구성되있는지 확인해주는 함수, solution을 완성하세요.
예를들어 s가 a234이면 False를 리턴하고 1234라면 True를 리턴하면 됩니다.
제한 사항
  • s는 길이 1 이상, 길이 8 이하인 문자열입니다.
입출력 예
sreturn
a234false
1234true






문제풀이 IDEA


들어오는 인자가 문자열이기때문에 숫자가 들어와도 문자로 인식하는 문제가 있다.

따라서 숫자의 경우에는 int형으로 형변환을 해줘야 하는데
이경우에 문자를 int로 형변환 할때 Error가 뜨게 된다.

if문으로는 이 Error를 처리 해줄수 없으므로 예외처리를 하여
에러가 발생할 경우 원하는 값을 return하게 해주면 되겠다.




나의코드 ⭐

1
1
2
3
4
5
6
7
8
9
def solution(s):
    if len(s)==4 or len(s)==6:           #길이가 4 혹은 6일때만 true를 리턴해줘야한다
        try:
            return type(int(s)) == int   #코드를 type(int(s))==int로 타입체크까지 했지만
        except:                          #그럴필요없이 int(s)만 해줘도 문자의 경우 Error가 발생해 
            return False                 #except구문으로 넘어갈것
    else:
        return False




다른코드 ⭐

1
2
3
4
5
6
7
8
9
# 문제가 개편 되었습니다. 이로 인해 함수 구성이 변경되어, 과거의 코드는 동작하지 않을 수 있습니다.
# 새로운 함수 구성을 적용하려면 [코드 초기화] 버튼을 누르세요. 단, [코드 초기화] 버튼을 누르면 작성 중인 코드는 사라집니다.
def alpha_string46(s):
    return s.isdigit() and len(s) in (4, 6)   #isdigit()는 문자열이 숫자로 이루어져 있는가를 체크하여
bool값으로 return해주고
                                               길이가 4 혹은 6인지를 판단해 두개의 bool값을 논리연산자를 이용해줬다
                                               튜플안에 존재하는지 확인해준 것 같다.




출처:https://programmers.co.kr

가장 많이 본 글