문제 자체는 쉬워 보였다. 그냥 문자열이 숫자만으로 이루어져 있으면 True를 출력하고 아니라면 False를 출력하는 것이다. 따라서 처음에는 isnumeric() 함수를 썼다:
def solution(s):
if len(s) == 4 or len(s) == 6:
for i in range(len(s)):
if not s[i].isnumeric():
return False
return True
else:
return False
일단 길이가 4, 6을 명시했으므로 길이가 4, 6일때랑 아닐때를 나누고, 아닐 겨우에는 False를 return하게끔 했다.
길이가 4, 6 일때도, 안에 있는 문자열을 확인해봐야 하는데, 안에 있는 문자열에 s[i], 즉 하나하나를 확인 했을 때, 숫자가 아닌게 나오는 순간 return False를 하게끔 했고, 다 숫자일 경우에는 return True를 하게끔 했다.
하지만 .isnumeric()으로 하니 문제가 생겼다. .isnumeric()의 경우에는 특수문자 "½" 와 같은 특수 문자도 숫자로 인식한다. 따라서 .isnumeric()이 아닌 .isdigit()을 사용해서 하면 된다:
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
'알고리즘 테스트 > 프로그래머스 문제풀이 및 해설' 카테고리의 다른 글
<프로그래머스 문제풀이: 소수 찾기> Level 1 - 파이썬 (0) | 2020.11.11 |
---|---|
<프로그래머스 문제풀이: 서울에서 김서방 찾기> Level 1 - 파이썬 (0) | 2020.11.10 |
<프로그래머스 문제풀이: 3진법 뒤집기> Level 1 - 파이썬 (0) | 2020.11.09 |
<프로그래머스 문제풀이: 문자열 내림차순으로 배치하기> Level 1 - 파이썬 (0) | 2020.11.08 |
<프로그래머스 문제풀이: 문자열 내 p와 y의 개수> Level 1 - 파이썬 (0) | 2020.11.07 |