반응형
https://programmers.co.kr/learn/courses/30/lessons/72410
2021 KAKAO BLIND RECRUITMENT
내 답안
def solution(new_id):
temp = ''
answer = ''
# 1
new_id = new_id.lower()
# 2
for i in new_id:
if i not in '~!@#$%^&*()=+[{]}:?,<>/':
temp += i
new_id = temp
temp = ''
# 3
if len(new_id) == 0:
return 'aaa'
else:
cnt = 0
for i in new_id:
if i == '.':
cnt += 1
if cnt < 2:
temp += i
else:
temp += i
cnt = 0
# 4
new_id = list(temp)
temp = ''
if new_id[0] == '.':
if len(new_id) >= 2:
new_id = new_id[1:]
else:
new_id = '.'
if new_id[-1] == '.':
new_id = new_id[:-1]
temp = list(new_id)
# 5
if len(temp) == 0:
return 'aaa'
# 6
while len(temp) >= 16:
temp.pop()
if temp[-1] == '.':
temp.pop()
while(temp[-1] == '.'):
temp.pop()
new_id = list(temp)
# 7
while(len(new_id) <= 2):
new_id.append(new_id[-1])
for i in new_id:
answer += i
return answer
난 그냥 조건에 있는 그대로 코드를 짰는데 상당히 길게 나왔다.
아래는 대표 문제 풀이이다.
정규식을 이용해서 풀었다는데 나는 정규식 공부를 안해서 모르겠다..
import re
def solution(new_id):
st = new_id
st = st.lower()
st = re.sub('[^a-z0-9\-_.]', '', st)
st = re.sub('\.+', '.', st)
st = re.sub('^[.]|[.]$', '', st)
st = 'a' if len(st) == 0 else st[:15]
st = re.sub('^[.]|[.]$', '', st)
st = st if len(st) > 2 else st + "".join([st[-1] for i in range(3-len(st))])
return st
이것도 대표 문풀 인데, 정말 깔끔해서 퍼 왔다.
def solution(new_id):
answer = ''
# 1
new_id = new_id.lower()
# 2
for c in new_id:
if c.isalpha() or c.isdigit() or c in ['-', '_', '.']:
answer += c
# 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
특히 # 3 이 정말 인상 깊었던 것 같다.
.
.
나는 정말 풀려고만 코드를 작성했지만
이 코드를 작성한 사람은 정말 파이썬에 대한 이해도 높고, 확실히 나보다 머리가 많이 좋은 것 같다 느꼈다.
많이 노력해야겠다,,
반응형
'프로그래머스' 카테고리의 다른 글
[프로그래머스] 성격 유형 검사하기 파이썬 (0) | 2022.08.30 |
---|---|
[프로그래머스] 숫자 문자열과 영단어 파이썬 (0) | 2022.03.24 |
[프로그래머스] 소수 만들기 파이썬 (0) | 2022.02.21 |
[프로그래머스] 약수의 개수와 덧셈 파이썬 (0) | 2022.02.17 |
프로그래머스 로또의 최고 순위와 최저 순위 파이썬 (0) | 2021.08.09 |