728x90
문제
코드
def solution(new_id):
new_id = new_id.lower()
# 2 ~ 3단계
new = []
new_id = list(new_id)
check = 0
for i in new_id:
if ((ord(i) >=97 and ord(i) <= 122) or (ord(i) >= 48 and ord(i) <= 57) or i == '-' or i == '_'):
new.append(i)
check = 0
elif i == '.':
if(check == 0):
check = 1
new.append(i)
try:
if new[0] == '.':
del new[0]
if new[-1] == '.':
new.pop()
except:
pass
new_id = "".join(new)
if len(new_id) == 0:
new_id += 'a'
if len(new_id) >= 16:
new_id = new_id[:15]
if new_id[-1] == '.':
new_id = new_id[:14]
elif len(new_id) == 1:
new_id = new_id + new_id + new_id
elif len(new_id) == 2:
new_id += new_id[-1]
return new_id
풀이
2021년 카카오에서 출제한 코딩테스트이다.
단계별로 체크해야 할 것이 많아 코드가 긴 편이다. 물론 더 생각한다면 줄일 수 있겠지만 프로그래머스를 통해 1차적으로 통과한 코드를 업로드하였다.
1단계 : 소문자로 치환하는 것은 lower( ) 함수를 통해 간단히 마무리했다.
2단계 : chr( ) 함수를 통해 문자의 아스키코드를 참고하여 필터링하였다.
3단계 : 마침표가 연속인 부분은 check 함수를 활용하여 구분하였다.
4단계 : 마침표가 처음이나 끝에 위치한 것은 인덱스를 통해 파악하여 제거하였다.
5단계 : 문자열은 + 를 통해 추가된다.
6~7단계 : if 문을 이용해 간단히 완료했다.
이번 문제는 어렵다기 보다는 차근차근 풀면 쉬운 문제였던 거 같다.
300x250
'코딩코딩' 카테고리의 다른 글
[프로그래머스] level2 - 짝지어 제거하기 : 파이썬(Python) 풀이 (2) | 2021.05.26 |
---|---|
[프로그래머스] level1 - 로또의 최고순위와 최저순위 : 파이썬(Python) 풀이 (0) | 2021.05.25 |
[프로그래머스] level1 - 두 개 뽑아서 더하기 : 파이썬(Python) 풀이 (0) | 2021.04.02 |
[프로그래머스] level1 - 모의고사 : 파이썬(Python) 풀이 (0) | 2020.12.24 |
[프로그래머스] level1 - 같은 숫자는 싫어 : 파이썬(Python) 풀이 (0) | 2020.12.17 |