티스토리 뷰
728x90
반응형
문제
https://programmers.co.kr/learn/courses/30/lessons/72410?language=python3
코드
def solution(new_id):
answer = 0
# 1
new_id = new_id.lower()
new_id_list = list(new_id)
#print(ord('.')) # a~z : 97 ~ 122
# 0~9 : 48 ~ 57, - : 45, _ : 95, . : 46
delete = []
# 2
for i in range(len(new_id_list)):
if 97 <= ord(new_id_list[i]) <= 122 or 48 <= ord(new_id_list[i]) <= 57 or 45 <= ord(new_id_list[i]) <= 46 or ord(new_id_list[i]) == 95:
continue
else:
delete.append(new_id_list[i])
for i in delete:
new_id_list.remove(i)
# 3
comma = []
leng = len(new_id_list)
for i in range(leng-1):
count = 1
if new_id_list[i] == '.':
if new_id_list[i+1] == '.':
comma.append(i)
print(comma)
cnt = 0
for i in comma:
new_id_list.pop(i-cnt)
cnt += 1
# 4
if new_id_list[0] == '.':
new_id_list.pop(0)
if len(new_id_list) == 0:
new_id_list.append('a')
if new_id_list[-1] == '.':
new_id_list.pop()
# 5
if len(new_id_list) == 0:
new_id_list.append('a')
# 6
if len(new_id_list) >= 16:
new_id_list = new_id_list[0:15]
if new_id_list[-1] == '.':
new_id_list.pop(-1)
# 7
while len(new_id_list) <= 2:
new_id_list.append(new_id_list[-1])
return "".join(new_id_list)
파이썬 리스트 인덱스로 요소 삭제시 for문 돌면서 바로 삭제하면 인덱스 에러가 뜸
새로 리스트 만들어서 인덱스 저장후 따로 for문 돌려서 삭제
인덱스 삭제시 기존 삭제하려는 인덱스와 달라질 수 있으므로 변수 cnt 추가하여 인덱스 제어해줬다.
반응형
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] Level3, 합승 택시 요금 (Python) (0) | 2021.08.10 |
---|---|
[프로그래머스] Level 2, 메뉴 리뉴얼 (Python) (0) | 2021.08.05 |
[프로그래머스] Level3, 가장 먼 노드 (Python) (0) | 2021.07.26 |
[프로그래머스] Level3, 네트워크 (Python) (0) | 2021.07.14 |
[프로그래머스] Level2, 방문길이(Python) (0) | 2021.06.28 |
댓글