level1_문자열 다루기 기본

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

is

 

내가 제출한 코드

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를 반환합니다.