문제) 신규 아이디 추천
코딩테스트 연습 - 신규 아이디 추천
카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로
programmers.co.kr
- 내 풀이
- → ⚠️17, 20, 21 번 에러: 뭐가 문제인지 모르겠음
def solution(new_id):
d=["-","_","."]
num=[str(i) for i in range(10)]
#소문자 치환
new_id=new_id.replace(new_id, new_id.lower())
#나머지 기호 전부 삭제
new_id=[id for id in new_id if id.isalpha()==True or id in num or id in d]
while True:
#연속된 마침표 하나로 치환
new_id="".join(new_id)
new_id=new_id.replace('..','.')
new_id=new_id.replace('...','.')
#양 끝 마침표 제거
new_id=new_id.strip('.')
if len(new_id)>=16:
#길이가 16이상이면 앞의 15개(0~14)만 남기고 제거
new_id=new_id[:15]
#제거 후에도 양 끝이 마침표가 아닐 경우 종료
if new_id[0]!='.' and new_id[-1]!='.':
if '..' not in new_id:
break
else: #15개 이하인데 양 끝이 마침표가 아니고 연속된 마침표가 없을 경우
if '..' not in new_id:
break
while len(new_id)<=2:
#길이가 0인 경우 'a' 추가
if len(new_id)==0:
new_id+='a'
else:
#길이가 2이하면 3이 될 때까지 맨 마지막 문자 반복
new_id+=new_id[-1]
return new_id
- 다른 사람 풀이
- .lower() 함수 : replace 사용할 필요없이 문자열에 바로 적용 가능
- 숫자/ 알파벳인지 확인 → .isalnum()
- 기호 리스트에 담아서 확인할 필요 없이 '-_.' 로 확인 가능
- 단계별로 풀이
def solution(new_id):
# 1단계
new_id = new_id.lower()
# 2단계
answer = ''
for word in new_id:
if word.isalnum() or word in '-_.':
answer += word
# 3단계
while '..' in answer:
answer = answer.replace('..', '.')
# 4단계
answer = answer[1:] if answer[0] == '.' and len(answer) > 1 else answer
answer = answer[:-1] if answer[-1] == '.' else answer
# 5단계
answer = 'a' if answer == '' else answer
# 6단계
if len(answer) >= 16:
answer = answer[:15]
if answer[-1] == '.':
answer = answer[:-1]
# 7단계
if len(answer) <= 3:
answer = answer + answer[-1] * (3-len(answer))
return answer
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
| [프로그래머스] [Level 2] [BFS] [2022 KAKAO BLIND RECRUITMENT] 양궁대회 (0) | 2022.04.08 |
|---|---|
| [프로그래머스] [Level 1] [2021 Dev-Matching: 웹 백엔드 개발자(상반기)] 로또의 최고 순위와 최저 순위 (0) | 2022.03.27 |
| [프로그래머스] [Level 1] [2021 카카오 채용연계형 인턴십] 숫자 문자열과 영단어 (0) | 2022.03.27 |
| [프로그래머스] [Level 1] 없는 숫자 더하기 (0) | 2022.03.27 |
| [프로그래머스] [Level 1] [2020 카카오 인턴십] 키패드 누르기 (0) | 2022.03.23 |