| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | |||||
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 31 |
Tags
- 토마토
- GIT
- Lv2
- 정수 삼각형
- 완전탐색
- 깃허브
- Java
- dfs
- 구현
- BFS
- 깃허브 프로필
- 분할정복
- 다익스트라
- 이코테
- 1932
- 그래프탐색
- 정렬
- 그래프
- 프로그래머스
- DP
- 자바
- 15686
- 알고리즘
- 조합
- 월간 코드 챌린지 시즌1
- Python
- Summer/Winter Coding(~2018)
- 백준
- 알고리즘고득점Kit
- 프로그래멋
Archives
- Today
- Total
갱스터하우스
[Python] Lv1.문자열 다루기 기본 본문
https://programmers.co.kr/learn/courses/30/lessons/12918
문제 설명
문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다.
제한조건
- s는 길이 1 이상, 길이 8 이하인 문자열입니다.
나의 접근방법 및 풀이
처음 문제를 읽었을 때, s의 길이 조건, 숫자로만 구성 확인을 보고 if문과 isdigit()으로 풀어야겠다고 생각했다.
먼저 if문으로 문자열의 길이가 4, 6일 때의 조건을 확인하고, 그다음 isdigit()을 이용해 해당 문자열이 숫자로 되어 있는지 확인하여 True 나 False를 return 한다.
def solution(s):
if len(s) == 4 or len(s) == 6:
if s.isdigit():
return True
else:
return False
else:
return False
<다른 풀이>
def alpha_string46(s):
return s.isdigit() and len(s) in (4, 6)
먼저 문자열의 길이를 if문이 아니라 'len(s) in (4, 6)'으로 구현한 게 정말 깔끔해 보였다. 그리고 isdigit()을 사용할 건 알았지만, 문자열의 길이와 숫자로 구성 여부를 중첩 if문이 아니라 'and'로 구현한 게 깔끔하고 명쾌했다.
def alpha_string46(s):
try:
int(s)
except:
return False
return len(s) == 4 or len(s) == 6
그리고 이런 방법도 있구나 한 풀이이다.
try문을 실행했을 때 s가 숫자로만 이루어졌다면 상관 없지만 ,'문자' 또는 '숫자+문자'라면 error가 발생해 except문의 코드를 실행, 즉 False를 return한다.
그리고 try 구문에서 성공했더라도 return문에서 문자열의 길이가 4와 6이 아니라면 except문의 False가 return 된다.
참 매력적이다!
'코테 문제 > 프로그래머스' 카테고리의 다른 글
| [Python] Lv1.문자열 내 p와 y의 개수 (0) | 2022.04.08 |
|---|---|
| [Python] Lv1.x만큼 간격이 있는 n개의 숫자 (0) | 2022.04.08 |
| [Python] Lv1.핸드폰 번호 가리기 (0) | 2022.04.08 |
| [Python] Lv1.하샤드 수 (0) | 2022.04.08 |
| [Python] Lv1.수박수박수박수박수박수? (0) | 2022.04.07 |