2024. 2. 4. 16:03ㆍ파이썬_알고리즘(코딩테스트)/level1

내가 제출한 코드
def solution(s):
if len(s) == 4 or len(s) == 6:
if s.isdigit() == True:
return True
else:
return Flase
else:
retrun False
사실 isdigit()라는 함수가 있는지 몰랐다. 도저히 코드를 어떻게 쳐야할지 몰라서 구글링을 하다가 isdigit()라는 함수가 있다는 걸 발견하고 코드를 썼다.
isdigit()
- 숫자로만 구성된 문자열을 감지하는 함수
- 문자가 단 하나라도 있다면 False
- 모든 문자가 숫자로만 이루어져 있다면 True
- 마이너스 '-', 소숫점 '.'은 문자로 판단하기 때문에 실수나 음수를 판단하지 못한다.
isdigit()함수를 찾아보면서 isalpha()함수도 알게되었다.
isalpha()
- 문자열의 구성이 알파벳인지에 대해서 확인하는 방법
- 문자열에 숫자 및 공백이 포함되어 있으면 False
다른 사람이 제출한 코드1
def alpha_string46(s):
return s.isdigit() and len(s) in [4,6]
문자열 길이가 4,6의 경우에 해당되는지를 확인하고, isdigit()으로 숫자인지 검증하는 코드이다.
내 코드랑 비교해봤을 때 역시 짧고 깔끔하게 쓰신거 같다.
다른 사람이 제출한 코드2
def alpha_string46(s):
try:
int(s)
except:
return False
return len(s) == 4 or len(s) == 6
try-except문을 써서 코드를 쓰셨다.
- try 블록 안에서 int(s)를 호출하여 문자열 's'를 정수로 변환을 시도한다.
- 결국 's'가 숫자로면 구성되어 있을 경우에만 성공한다.
- 만약 숫자가 아닐경우에는 False를 결과값으로 나타낸다.
- 's'가 숫자로만 구성되어 있어 int(s) 호출이 성공하면 함수는 return으로 간다.
- 여기서 함수는 문자열의 길이가 4이거나 6인지를 검사하고, 이 조건이 참일 경우에는 True, 거짓일 경우에는 False를 반환한다.
다른 사람이 제출한 코드3
def alpha_string46(s):
import re
return bool(re.match("^(\d{4}|\d{6})$", s))
정규식으로 문제를 푸신 분이 계셨다.
- import re : python의 정규 표현식 모듈인 're'를 불러온다.
- 이 모듈은 문자열에서 정규 표현식을 사용하여 검색, 수정 등의 작업을 수행하는 기능을 제공
- bool(re.match("^(\d{4}|\d{6})$", s))
- re.match 함수는 문자열 's'가 주어진 정규 표현식 패턴( "^(\d{4}|\d{6})$" )과 일치하는지를 검사한다.
- '^' : 문자열의 시작
- '$' : 문자열의 끝
- '\d' : 숫자를 나타냄
- {4} : 숫자가 정확히 4번 반복되어야 함
- {6} : 숫자각 정확히 6번 반복되어야 함
- | : or
- bool() 함수는 re.match의 결과를 불리언 값으로 변환한다.
- 객체가 있으면 'True', 없으면 'None'로 변환된다.
따라서 이 함수는 주어진 문자열 s가 정확히 4개 또는 6개의 숫자로만 구성되어 있을 때 True를 반환하고, 그렇지 않으면 False를 반환합니다.
'파이썬_알고리즘(코딩테스트) > level1' 카테고리의 다른 글
| level1_직사각형 별찍기 (0) | 2024.02.06 |
|---|---|
| level1_행렬의 덧셈 (0) | 2024.02.04 |
| level1_부족한 금액 계산하기 (0) | 2024.02.03 |
| level1_문자열 내림차순으로 배치하기 (0) | 2024.02.01 |
| level1_약수의 개수와 덧셈 (0) | 2024.02.01 |