[프로그래머스] 신규 아이디 추천 (Python)
[프로그래머스] 신규 아이디 추천 (Python)
풀이
주어진 조건을 완벽히 구현할 수 있는지가 문제의 포인트라고 생각했다. 단순한 구현 문제로 Python의 .lower(), .isalpha(), .isdigit(), ...
등의 함수를 사용하여 주어진 조건을 완벽히 구현할 수 있다면 쉽게 문제를 풀 수 있다고 생각한다.
문제의 3번 조건 코드를 작성하는데 오래 걸렸다. idx
변수를 이용해 문자열의 모든 문자를 하나씩 탐색하면서 '.'
가 2개 이상 있다면 idx
를 이용하여 문자열 슬라이싱을 하고, 슬라이싱 된 문자열 사이에 '.'
를 넣어주면서 전체 문자열을 계속 갱신하는 방식으로 구현하였다.
코드
def solution(new_id):
answer = new_id
# 1번
answer = answer.lower()
# 2번
temp = ''
for i in range(len(answer)):
if answer[i].isalpha() or answer[i].isdigit() or answer[i] == '-' or answer[i] == '_' or answer[i] == '.':
temp += answer[i]
answer = temp
# 3번 --> 구현 오래 걸렸다.
idx = 0 # idx는 계속 증가
while answer[idx:].count('.') > 1:
cnt = 0
# 시작 idx가 '.'이고
if answer[idx] == '.':
# 다음으로 연속된 '.'을 찾는 과정
for i in range(idx + 1, len(answer)):
if answer[i] != '.':
break
cnt += 1
answer = answer[:idx] + '.' + answer[idx + cnt + 1:]
idx += 1
# 4번
# 첫 번째 if에서 문자 삭제되어서 빈 문자열이 될 때 주의!
if len(answer) > 0 and answer[0] == '.':
answer = answer[1:]
if len(answer) > 0 and answer[-1] == '.':
answer = answer[:len(answer) - 1]
# 5번
if len(answer) == 0:
answer = 'a'
# 6번
if len(answer) >= 16:
answer = answer[:15]
if answer[-1] == '.':
answer = answer[:14]
# 7번
if len(answer) <= 2:
word = answer[-1]
while len(answer) < 3:
answer += word
return answer
Author And Source
이 문제에 관하여([프로그래머스] 신규 아이디 추천 (Python)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@kimdukbae/프로그래머스-신규-아이디-추천
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
def solution(new_id):
answer = new_id
# 1번
answer = answer.lower()
# 2번
temp = ''
for i in range(len(answer)):
if answer[i].isalpha() or answer[i].isdigit() or answer[i] == '-' or answer[i] == '_' or answer[i] == '.':
temp += answer[i]
answer = temp
# 3번 --> 구현 오래 걸렸다.
idx = 0 # idx는 계속 증가
while answer[idx:].count('.') > 1:
cnt = 0
# 시작 idx가 '.'이고
if answer[idx] == '.':
# 다음으로 연속된 '.'을 찾는 과정
for i in range(idx + 1, len(answer)):
if answer[i] != '.':
break
cnt += 1
answer = answer[:idx] + '.' + answer[idx + cnt + 1:]
idx += 1
# 4번
# 첫 번째 if에서 문자 삭제되어서 빈 문자열이 될 때 주의!
if len(answer) > 0 and answer[0] == '.':
answer = answer[1:]
if len(answer) > 0 and answer[-1] == '.':
answer = answer[:len(answer) - 1]
# 5번
if len(answer) == 0:
answer = 'a'
# 6번
if len(answer) >= 16:
answer = answer[:15]
if answer[-1] == '.':
answer = answer[:14]
# 7번
if len(answer) <= 2:
word = answer[-1]
while len(answer) < 3:
answer += word
return answer
Author And Source
이 문제에 관하여([프로그래머스] 신규 아이디 추천 (Python)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@kimdukbae/프로그래머스-신규-아이디-추천저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)