- 문제 설명
- 제한 사항
- 입출력 예
입출력 예 #1
문제의 예시와 같습니다.
입출력 예 #2
7단계를 거치는 동안 new_id가 변화하는 과정은 아래와 같습니다.
1단계 변화 없습니다.
2단계 "z-+.^." → "z-.."
3단계 "z-.." → "z-."
4단계 "z-." → "z-"
5단계 변화 없습니다.
6단계 변화 없습니다.
7단계 "z-" → "z--"
입출력 예 #3
7단계를 거치는 동안 new_id가 변화하는 과정은 아래와 같습니다.
1단계 변화 없습니다.
2단계 "=.=" → "."
3단계 변화 없습니다.
4단계 "." → "" (new_id가 빈 문자열이 되었습니다.)
5단계 "" → "a"
6단계 변화 없습니다.
7단계 "a" → "aaa"
입출력 예 #4
1단계에서 7단계까지 거치는 동안 newid("123.def")는 변하지 않습니다. 즉, new_id가 처음부터 카카오의 아이디 규칙에 맞습니다.
입출력 예 #5
1단계 변화 없습니다.
2단계 변화 없습니다.
3단계 변화 없습니다.
4단계 변화 없습니다.
5단계 변화 없습니다.
6단계 "abcdefghijklmn.p" → "abcdefghijklmn." → "abcdefghijklmn"
7단계 변화 없습니다.
- 접근법
단순 구현문제였으나 자칫 어렵게 문제를 풀어나갈 수도 있었다.
'..' -> '.'으로 변경하는 과정이나
단어가 '.'하나만 들어있는 경우 처리하는 방법 등
몇번의 실패를 겪었지만 그래도 구현하는데 어려운 알고리즘 기법이나
함수를 사용하지는 않았다.
이 문제를 끝으로 프로그래머스 레벨 1을 모두 풀었다.
처음 문제를 풀기 시작할때보다 훨씬 나아졌지만,
아직 이정도가 레벨 1이라고? 생각했던 문제들도 많았다.
레벨 2 문제를 풀면서 파이썬 갑게 풀어보는게 목표이다.
def solution(new_id):
answer =''
# 1, 2
for i in new_id.lower():
if i in ("-", "_", ".") or i.isdigit() or i.isalpha():
answer += i
# 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