https://programmers.co.kr/learn/courses/30/lessons/72410?language=python3
파이썬으로 다시 풀었다.
이 문제...음 각 언어 이해하기에 아주 좋은 문제인듯
def solution(new_id):
# 1단계
new_id = new_id.lower()
# 2단계
for i in new_id:
if i.isalnum() or i == '-' or i == '_' or i == '.':
continue
else:
new_id = new_id.replace(i, '')
# 3단계 여기 참고했음
while '..' in new_id:
new_id = new_id.replace('..', '.')
# 4단계
if new_id.startswith('.'):
new_id = new_id[1:]
if new_id.endswith('.'):
new_id = new_id[:len(new_id) - 1]
# 5단계
if new_id == '':
new_id = 'a'
# 6단계
if len(new_id) >= 16:
new_id = new_id[:15]
if new_id.endswith('.'):
new_id = new_id[:14]
# 7단계
if len(new_id) == 2:
new_id = new_id + new_id[1]
elif len(new_id) == 1:
new_id = new_id + new_id[0] + new_id[0]
return new_id
3단계인 중복 '.'을 제거해서 하나로 만드는 작업은 다른 사람꺼 참고했다.
생각이 정말 안나서ㅠㅠ 저 방법 아주 좋은듯....ㅎㅎ
이거는 남의 코드를 정말 잘 봐야지!
남의 코드
i == '-' or i == '_' or i == '.' 이렇게 푼걸
저렇게 그냥 in '-_.'으로 할 수 있구나 흑흑...
3단계는 이분꺼 참고했고 4, 5단계는 -- if -- else -- 이 문법을 사용하였다.
맨 뒤에꺼 없애는법 : answer[:-1] ㅇㅋㅇㅋ
마지막 7단계는 글자수가 3 이하면 맨 마지막 문제 * (3 - 문자열길이) 아주 좋다...
isalpha() 쓰면 알파벳인지 확인, isdigit() 쓰면 숫자인지, isalnum() 쓰면 알파벳,숫자인지 확인!
in '-_.' 또는 ['-', '_', '.']로 리스트화해서 써도 ㄱㅊ
정규식 진짜 싫다.....
내장 모듈 regex을 사용함
re.sub (정규 포현식, 대상 문자열, 치환 문자)
문자열이 ^의 뒤에 있는 문자로 시작되면 매치된다.
여러 개의 정규표현식들을 | 로 구분하면 or 의 의미가 적용되어 정규표현식들 중 어느 하나와 매치된다.
문자열이 $의 앞에 있는 문자로 끝나면 매치된다.
설명 굿 : https://nachwon.github.io/regular-expressions/
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 크레인 인형뽑기 게임 for Python (0) | 2022.03.15 |
---|---|
[프로그래머스] 키패드 누르기 for Python (0) | 2022.03.15 |
[프로그래머스] 로또의 최고 순위와 최저 순위 for python (0) | 2022.03.13 |
[프로그래머스] 최소직사각형 for Python (0) | 2022.03.11 |
[프로그래머스] 시저 암호 for Python (0) | 2022.03.01 |