신규 아이디 추천 [level 1]

Ji·2022년 3월 15일
0
#1. 아이디 규칙에 맞는 아이디 입력
#2. 입력된 아이디와 유사하면서 규칙 맞는 아이디 추천
#3. 마침표(.) 처음, 끝, 연속 사용 X
#4. 대문자-> 소문자
#5. 소문자, 숫자, 빼기, 밑줄, 마침표 제외 제거
#6. 빈문자열이면 new_id에 a 대입
#7. 길이 16자 이상이면 15개 제외 제거, 마침표가 끝이면 마침표 제거
#8. new_id 길이 2자 이하-> 길이 3이 될때까지 반복
# 아스키코드 : A~Z(65~89) a~z(97~122)
# isalnum() 메소드: 
# 문자열이 알파벳([a-zA-Z])과 숫자([0-9])로만 구성되었는지 확인하는 파이썬 문자열 메소드
# replace 함수 숙지
def solution(new_id):
    answer = ''


    #1단계
    new_id = new_id.lower()
    #2단계
    for word in new_id:
        if word.isalnum() or word in '-_.': 
            answer += word
    #3단계 
    while '..' in answer:
        answer = answer.replace('..', '.')
    #4단계
    if answer[0]=='.' and len(answer)>1:
        answer=answer[1:]
    if answer[-1]=='.' and len(answer)>1:
        answer=answer[:-1]
    if answer=='.':
        answer=''

    #5단계
    if answer=='':
        answer='a'


    #6단계
    if len(answer)>=16:
        answer=answer[:15]
        if answer[-1]=='.':
            answer=answer[:-1]
    #7단계
    if len(answer)==2:
        answer=answer+answer[1]

    if len(answer)==1:
        answer=answer+answer[0]*2

    return answer

다른 풀이

def solution(new_id):
    answer = ''
    # 1
    new_id = new_id.lower()
    # 2
    for c in new_id:
        if c.isalpha() or c.isdigit() or c in ['-', '_', '.']:
            answer += c
    # 3
    while '..' in answer:
        answer = answer.replace('..', '.')
    # 4
    if answer[0] == '.':
        answer = answer[1:] if len(answer) > 1 else '.'
    if answer[-1] == '.':
        answer = answer[:-1]
    # 5
    if answer == '':
        answer = 'a'
    # 6
    if len(answer) > 15:
        answer = answer[:15]
        if answer[-1] == '.':
            answer = answer[:-1]
    # 7
    while len(answer) < 3:
        answer += answer[-1]
    return answer

내용 복습

replace()

  • 문자열 안에서 특정 문자를 새로운 문자로 변경
>>> a = 'hello world'
>>> a.replace('hello','hi')
hi world
while '..' in answer:
        answer = answer.replace('..', '.')

isalnum()

  • 문자열이 알파벳([a-zA-Z])과 숫자([0-9])로만 구성되었는지 확인
for word in new_id:
        if word.isalnum() or word in '-_.': 
            answer += word

isalpha()

  • 문자열이 알파벳([a-zA-Z])으로만 구성되었는지 확인하는 파이썬 문자열 메소드
print( 'abcD'.isalpha() )

islower()

print( 'abcd123#'.islower() )
# True

isupper()

print( 'ABCD123#'.isupper() )
True

isdigit()

print( '1234'.isdigit() )
# True
print( '123edsd'.isdigit() )
# False

upper(), lower() : 대소문자 변환

str1 = 'Hello'
str2 = 'WORLD'

print(str1.upper())
print(str1.lower())
print(str2.upper())
print(str2.lower())
profile
공부방

0개의 댓글