2021. 7. 22. 01:00ใ๐ฑ Algorithm
โ ์ ๊ทผ
์ง๋ฌธ ๊ธธ์ด๊ฐ ๊ธธ์ด ๋นํฉํ์ง๋ง, ์ ํ ๋ด์ฉ์ ๊ทธ๋๋ก ์ฝ๋๋ก ์ฎ๊ธฐ๋ฉด ๋๋ ์ด๋ ต์ง ์์ ๋ฌธ์ ์ ๋๋ค.
๋ฌธ์์ด์ ์๋จ๊ณผ ๋ท๋จ์์ ๋นผ๋ ์์ ์ด ํ์ํ์ฌ deque() ์ ์ฌ์ฉํ์ต๋๋ค.
๐ป ์ฝ๋
from collections import deque
def solution(new_id):
# 1๋จ๊ณ
new_id = new_id.lower()
# 2๋จ๊ณ
second = ''
for l in new_id:
if l.isdigit() or l.isalpha() or l in ['-', '_', '.']:
second += l
# 3๋จ๊ณ
while True:
if '..' in second:
second = second.replace('..', '.')
else:
break
# 4๋จ๊ณ
second = deque(second)
if second[0] == '.':
second.popleft()
if second and second[-1] == '.':
second.pop()
# 5๋จ๊ณ
if not second:
second = 'a'
# 6๋จ๊ณ
second = list(second)
if len(second) >= 16:
second = second[0:15]
if second[-1] == '.':
second = second[0:14]
# 7๋จ๊ณ
while len(second) <= 2:
second += second[-1]
return ''.join(second)
โ๏ธ ์ฃผ์
์ ๋ ํ ์คํธ์ผ์ด์ค 3,4,5,11,15์์ ์คํจํ๋๋ฐ, ์ด์ ๋ 4๋จ๊ณ์ ์์์ต๋๋ค.
(a)์ฒซ๋ฒ์งธ ๋ฌธ์ ํน์ (b)๋ง์ง๋ง ๋ฌธ์๊ฐ "."์ธ ๊ฒฝ์ฐ์ popleft(), pop() ์ ํด์ฃผ์ด์ผ ํ๋๋ฐ,
if ~ else if ๊ตฌ๋ฌธ์ ์ผ๊ธฐ ๋๋ฌธ์ (a), (b) ๋ชจ๋ ๊ฒฝ์ฐ๊ฐ ์๋ (a) ์ ๋ํด์๋ง ์คํ๋์ต๋๋ค.
if~ else if ๊ตฌ๋ฌธ์ด ์๋ 2๊ฐ์ if ๊ตฌ๋ฌธ์ผ๋ก ๋๋์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์์ต๋๋ค.
๋ํ ์ฒซ๋ฒ์งธ if ๋ฌธ์ด ์คํ๋ ํ, ๋ฌธ์์ด์ด ์กด์ฌํ์ง ์๊ฒ ๋๋ฉด ๋๋ฒ์งธ if ๋ฌธ์์ ๊ณง๋ฐ๋ก pop() ํ ๋ฌธ์๊ฐ ์์ด์ง๋๋ค.
๋๋ฌธ์ second ๋ผ๋ ๋ฌธ์์ด์ด ๋จผ์ ์กด์ฌํ๋์ง(if second and ...) ํ์ธ ํ ์กฐ๊ฑด๋ฌธ์ ์คํํ๋๋ก ์์ ํด์ผ ํฉ๋๋ค.
๐ฆ ์ ๊ท ํํ์ ํ์ด
์ ๊ทํํ์์ ์ด์ฉํ ํ์ด๋ ์กด์ฌํฉ๋๋ค.
์ ๊ท ํํ์์ ์ฌ์ฉํ๋ฉด .isdigit() ๊ฐ์ ๋ฉ์๋๋ฅผ ๋ชจ๋ฅด๋๋ผ๋ ๋ฌธ์ ๋ฅผ ์ฝ๊ฒ ํ ์ ์์ต๋๋ค.
def solution2(new_id):
# 1 : ์๋ฌธ์ ์นํ
new_id = new_id.lower()
# 2 : ํน์ ๋ฌธ์ ์ธ ์ ๊ฑฐ
answer = re.sub('[^a-z\d\-\_\.]', '', new_id)
# 3 : ๋ง์นจํ 2๋ฒ ์ฐ์์ ํ๋๋ก ์นํ
answer = re.sub('\.\.+', '.', answer)
# 4 : ์ ๋ ๋ง์นจํ ์ ๊ฑฐ
answer = re.sub('^\.|\.$', '', answer)
# 5 : ๋น ๋ฌธ์์ด์ผ ๊ฒฝ์ฐ 'a' ์ถ๊ฐ
if not answer:
answer = 'a'
# 6 : ๊ธธ์ด๊ฐ 16์ ์ด์์ด๋ฉด 1~15์๋ง ๋จ๊ธฐ๊ธฐ & ๋งจ ๋ ๋ง์นจํ ์ ๊ฑฐ
answer = re.sub('\.$', '', answer[0:15])
# 7 : ๊ธธ์ด๊ฐ 2 ์ดํ๋ฉด, 3์ด ๋ ๋๊น์ง ํด๋น ๋ฌธ์์ด์ ๋ง์ง๋ง ๊ธ์๋ฅผ ๋ฐ๋ณตํด์ ๋ถ์ธ๋ค.
while len(answer) < 3:
answer += answer[-1]
return answer
'๐ฑ Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค [lv2] ๋ฐฐ๋ฌ ํ์ด์ฌ (0) | 2021.07.28 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค [lv2] ํ์ผ๋ช ์ ๋ ฌ ํ์ด์ฌ (0) | 2021.07.25 |
ํ๋ก๊ทธ๋๋จธ์ค [lv1] ์ซ์ ๋ฌธ์์ด๊ณผ ์๋จ์ด ํ์ด์ฌ (0) | 2021.07.21 |
ํ๋ก๊ทธ๋๋จธ์ค [lv1] ์์ฃผํ์ง ๋ชปํ ์ ์ ํ์ด์ฌ (0) | 2021.06.30 |
ํ๋ก๊ทธ๋๋จธ์ค [lv3] ๊ฐ์ฅ ๊ธด ํฐ๋ฆฐ๋๋กฌ ํ์ด์ฌ (0) | 2021.05.27 |