<로직 고민>
- 문제를 보자마자 try-except 구문을 써서 int형으로 변환이 되면 그대로 True, except문으로 넘어가면 answer에 False가 들어가게 하면 되겠다고 생각했다
def solution(s):
answer = True
try:
int(s)
except:
answer = False
return answer
- 테스트가 30개 있는데 4개에서 실패가 떴다
- 실패할 이유가 없는 것 같은데....싶어서 문제를 다시 뚫어지게 쳐다봤다
- 문자열 s의 길이가 4 또는 6인 입력값이 들어오는 게 아니라 4 또는 6인지를 판별해야 하는 거였다,,ㅋㅋㅋ
- if문으로 문자열 s의 길이를 제한해 주니 문제가 풀렸다
- 너무 빨리 풀어서 다른 풀이법을 또 생각해봐야 할 것 같은 느낌이 든다
- 흠 더 효율적으로 풀려면 어떻게 해야 하는 것일까...
- 이보다 간결하고 명확할 수는 없을 것 같다 무려 11점을 얻었다!
- answer = False가 2개 있어서 하나로 합치는 풀이를 생각해 내고 싶기는 한데....프로젝트에 집중해야 하니..!!!
- 오늘 풀이는 아래 풀이로 만족하고 다른 사람 풀이를 봐야겠다
<완성된 코드>
def solution(s):
answer = True
if len(s) == 4 or len(s) == 6:
try:
int(s)
except:
answer = False
else:
answer = False
return answer
<다른 사람 풀이>
- 천재풀이1
def solution(s):
return s.isdigit() and len(s) in [4,6]
- 아 isdigit() 사용법 까먹고 isdigit(s) 이렇게 하고 왜 런타임에러 뜨지....하고 있었네...ㅎㅎ
- 그나저나 len(s) in [4,6]이 대박이네...난 왜 이런 생각을 못 하고 단순하게 저렇게 쓸까....휴
- isdigit() 제대로 썼다면 두 번째 풀이로 내놓았을 풀이,,ㅎㅎ
def solution(s):
if (len(s) == 4 or len(s) == 6) and s.isdigit():
return True
else:
return False
- 천재풀이2
def solution(s):
try:
int(s)
except:
return False
return len(s) == 4 or len(s) == 6
- 와 if문 안 쓰고 저렇게 리턴해도 되는구나...
- 알고 있었는데 몰랐다....