티스토리 뷰

반응형

https://programmers.co.kr/learn/courses/30/lessons/72410

 

코딩테스트 연습 - 신규 아이디 추천

카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로

programmers.co.kr

 


⊙ 문제

⊙ 제한사항

⊙ 입출력 예

⊙ 입출력 예 설명

 


⊙ 문제 접근 과정

 

 

파이썬 문자열 기본 개념을 다지기 좋은 문제다.

 

1️⃣ 1단계 제한조건

모든 대문자를 소문자로 변경하는 조건이 있다.

문자열에서 대문자를 소문자로 변경하는 함수는 lower()이다.

# 1단계 (소문자 변경)
    new_id = new_id.lower()

 

2️⃣ 2단계 제한조건

소문자, 숫자, "-, _, ."만 아이디가 될 수 있다.

소문자 판별 함수 islower()

숫자 판별 함수 isdigit()

특수문자는 for i in {"-", "_", "."} 으로 확인해주자

# 2단계 (!,@,#,* 제거)
    for i in new_id:
        if not (i.islower() or i.isdigit() or i in {"-","_","."}):
            new_id = new_id.replace(i,"")

 

3️⃣ 3단계 제한조건

. 이 연속되는 것을 지워줘야 한다.

while 반복문replace() 함수를 사용해주자

# 3단계 (..., .. 제거)
    while '..' in new_id:
        new_id = new_id.replace("..",".")

 

4️⃣ 4단계 제한조건

맨 앞과 맨 뒤 "."를 지워줘야 한다.

양쪽 특정 문자 삭제하는 함수인 strip()을 사용해주자

# 4단계 (맨 앞, 맨 뒤 . 제거)
    new_id = new_id.strip(".")

 

5️⃣ 5단계 제한조건

빈 문자열이면 a를 추가해준다.

if문을 사용해 빈 문자열이면 a를 추가해주자

# 5단계 (길이 조건 # 1)
    while not len(new_id):
        new_id+="a"

 

6️⃣ 6단계 제한조건

문자열의 길이가 15 이하여야 하고 15를 초과하면 뒷부분을 삭제해야 한다.

if 조건문인덱스를 사용하여 해결해주자.

 

🛑주의사항 : 문자열을 잘랐을 때, 마지막 문자가 "."일 가능성이 존재한다. 확인해주자.

# 6단계 (길이 조건 # 2)
    if len(new_id) >= 16:
        new_id = new_id[:15]
        if new_id[14] == ".":
            new_id = new_id[:-1]

 

7️⃣ 7단계 제한조건

길이가 만약 3보다 작다면 맨 마지막 문자로 채워주자

while 반복문인덱스를 사용해 해결해주자

# 7단계 (길이 조건 # 3)
    while len(new_id) <3:
        plus = new_id[-1]
        new_id+=plus

 

 

이제 아래 코드를 참고해보자

 


 

⊙ 문제 풀이

 

def solution(new_id):
    # 1단계 (소문자 변경)
    new_id = new_id.lower()

    # 2단계 (!,@,#,* 제거)
    for i in new_id:
        if not (i.islower() or i.isdigit() or i in {"-","_","."}):
            new_id = new_id.replace(i,"")

    # 3단계 (..., .. 제거)
    while '..' in new_id:
        new_id = new_id.replace("..",".")

    # 4단계 (맨 앞 . 제거)
    new_id = new_id.strip(".")

    # 5단계 (길이 조건 # 1)
    while not len(new_id):
        new_id+="a"

    # 6단계 (길이 조건 # 2)
    if len(new_id) >= 16:
        new_id = new_id[:15]
        if new_id[14] == ".":
            new_id = new_id[:-1]

    # 7단계 (길이 조건 # 3)
    while len(new_id) <3:
        plus = new_id[-1]
        new_id+=plus

    return new_id

⊙ 마무리

 

 

파이썬 문자열 기본 다지기 좋은 문제!

 

 

좋아요는 로그인하지 않아도 누를 수 있습니다!

728x90
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
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
글 보관함