
1단계 new_id의 모든 대문자를 대응되는 소문자로 치환합니다.
2단계 new_id에서 알파벳 소문자, 숫자, 빼기(-), 밑줄(_), 마침표(.)를 제외한 모든 문자를 제거합니다.
3단계 new_id에서 마침표(.)가 2번 이상 연속된 부분을 하나의 마침표(.)로 치환합니다.
4단계 new_id에서 마침표(.)가 처음이나 끝에 위치한다면 제거합니다.
5단계 new_id가 빈 문자열이라면, new_id에 "a"를 대입합니다.
6단계 new_id의 길이가 16자 이상이면, new_id의 첫 15개의 문자를 제외한 나머지 문자들을 모두 제거합니다.
만약 제거 후 마침표(.)가 new_id의 끝에 위치한다면 끝에 위치한 마침표(.) 문자를 제거합니다.
7단계 new_id의 길이가 2자 이하라면, new_id의 마지막 문자를 new_id의 길이가 3이 될 때까지 반복해서 끝에 붙입니다.




나의 코드
def solution(new_id):
answer = ''
#1단계 대문자를 소문자로 치환
for i in new_id:
if i.isupper():
answer += i.lower()
else:
answer += i
#print(answer)
#2단계 알파벳 소문자, 숫자, 빼기(-), 밑줄(_), 마침표(.)
#제외한 문자 모두 제외
for i in answer:
if i.islower() or i.isdigit() or i=='-' or i=='_' or i=='.':
continue
else:
answer = answer.replace(i,'')
#print(answer)
#3단계 .가 두번 이상이면 연속된 부분을 하나의 마침표로 치환
new_answer = answer[0]
for i in range(1, len(answer)):
if answer[i] == '.' and new_answer[-1] == answer[i]:
continue
else:
new_answer += answer[i]
answer = new_answer
#print(answer)
#4단계 .가 처음이나 끝에 있다면 제거
if answer[0] == '.' and len(answer)>1:
answer = answer[1:]
elif answer[-1] == '.':
answer = answer[:-1]
#print(answer)
#5단계 빈문자열 이면 a를 대입
if answer == '':
answer = 'a'
#print(answer)
#6단계 길이가 16이상이면 15개만 남기고 제외
#제외후 .가 끝에 위치한다면 문자제거
if len(answer) >= 16:
answer_list = list(answer)[0:15]
if answer_list[-1] == '.':
del answer_list[-1]
answer = ''.join(answer_list)
#print(answer)
#7단계 길이가 2자이하면 마지막 문자를 길이가3이 될떄까지
#반복해서 끝에 붙임
if len(answer) <= 2:
while len(answer) < 3:
answer += answer[-1]
print(answer)
return answer
solution("abcdefghijklmn.p")
'코딩테스트 파이썬 > 파이썬 프로그래머스 1단계' 카테고리의 다른 글
| 둘만의 암호 (0) | 2023.05.22 |
|---|---|
| 대충 만든 자판 (0) | 2023.05.22 |
| [카카오 인턴] 키패드 누르기 (0) | 2023.05.22 |
| 크레인 인형뽑기 게임 (0) | 2023.05.21 |
| 문자열 나누기 (0) | 2023.05.21 |