# 2021 KAKAO BLIND RECRUITMENT #72410λ² # lv1
# λ¬Έμ
μΉ΄μΉ΄μ€μ μ
μ¬ν μ μ
κ°λ°μ λ€μ€λ "μΉ΄μΉ΄μ€κ³μ κ°λ°ν"μ λ°°μΉλμ΄, μΉ΄μΉ΄μ€ μλΉμ€μ κ°μ
νλ μ μ λ€μ μμ΄λλ₯Ό μμ±νλ μ
무λ₯Ό λ΄λΉνκ² λμμ΅λλ€. "λ€μ€"μκ² μ£Όμ΄μ§ 첫 μ
무λ μλ‘ κ°μ
νλ μ μ λ€μ΄ μΉ΄μΉ΄μ€ μμ΄λ κ·μΉμ λ§μ§ μλ μμ΄λλ₯Ό μ
λ ₯νμ λ, μ
λ ₯λ μμ΄λμ μ μ¬νλ©΄μ κ·μΉμ λ§λ μμ΄λλ₯Ό μΆμ²ν΄μ£Όλ νλ‘κ·Έλ¨μ κ°λ°νλ κ²μ
λλ€.
λ€μμ μΉ΄μΉ΄μ€ μμ΄λμ κ·μΉμ
λλ€.
- μμ΄λμ κΈΈμ΄λ 3μ μ΄μ 15μ μ΄νμ¬μΌ ν©λλ€.
- μμ΄λλ μνλ²³ μλ¬Έμ, μ«μ, λΉΌκΈ°(-), λ°μ€(_), λ§μΉ¨ν(.) λ¬Έμλ§ μ¬μ©ν μ μμ΅λλ€.
- λ¨, λ§μΉ¨ν(.)λ μ²μκ³Ό λμ μ¬μ©ν μ μμΌλ©° λν μ°μμΌλ‘ μ¬μ©ν μ μμ΅λλ€.
"λ€μ€"λ λ€μκ³Ό κ°μ΄ 7λ¨κ³μ μμ°¨μ μΈ μ²λ¦¬ κ³Όμ μ ν΅ν΄ μ κ· μ μ κ° μ
λ ₯ν μμ΄λκ° μΉ΄μΉ΄μ€ μμ΄λ κ·μΉμ λ§λ μ§ κ²μ¬νκ³ κ·μΉμ λ§μ§ μμ κ²½μ° κ·μΉμ λ§λ μλ‘μ΄ μμ΄λλ₯Ό μΆμ²ν΄ μ£Όλ €κ³ ν©λλ€.
μ κ· μ μ κ° μ
λ ₯ν μμ΄λκ° new_id λΌκ³ νλ€λ©΄,
# 1λ¨κ³ new_idμ λͺ¨λ λλ¬Έμλ₯Ό λμλλ μλ¬Έμλ‘ μΉνν©λλ€.
# 2λ¨κ³ new_idμμ μνλ²³ μλ¬Έμ, μ«μ, λΉΌκΈ°(-), λ°μ€(_), λ§μΉ¨ν(.)λ₯Ό μ μΈν λͺ¨λ λ¬Έμλ₯Ό μ κ±°ν©λλ€.
# 3λ¨κ³ new_idμμ λ§μΉ¨ν(.)κ° 2λ² μ΄μ μ°μλ λΆλΆμ νλμ λ§μΉ¨ν(.)λ‘ μΉνν©λλ€.
# 4λ¨κ³ new_idμμ λ§μΉ¨ν(.)κ° μ²μμ΄λ λμ μμΉνλ€λ©΄ μ κ±°ν©λλ€.
# 5λ¨κ³ new_idκ° λΉ λ¬Έμμ΄μ΄λΌλ©΄, new_idμ "a"λ₯Ό λμ
ν©λλ€.
# 6λ¨κ³ new_idμ κΈΈμ΄κ° 16μ μ΄μμ΄λ©΄, new_idμ 첫 15κ°μ λ¬Έμλ₯Ό μ μΈν λλ¨Έμ§ λ¬Έμλ€μ λͺ¨λ μ κ±°ν©λλ€.
# λ§μ½ μ κ±° ν λ§μΉ¨ν(.)κ° new_idμ λμ μμΉνλ€λ©΄ λμ μμΉν λ§μΉ¨ν(.) λ¬Έμλ₯Ό μ κ±°ν©λλ€.
# 7λ¨κ³ new_idμ κΈΈμ΄κ° 2μ μ΄νλΌλ©΄, new_idμ λ§μ§λ§ λ¬Έμλ₯Ό new_idμ κΈΈμ΄κ° 3μ΄ λ λκΉμ§ λ°λ³΅ν΄μ λμ λΆμ
λλ€.
μ κ· μ μ κ° μ
λ ₯ν μμ΄λλ₯Ό λνλ΄λ new_idκ° λ§€κ°λ³μλ‘ μ£Όμ΄μ§ λ, "λ€μ€"κ° μ€κ³ν 7λ¨κ³μ μ²λ¦¬ κ³Όμ μ κ±°μΉ νμ μΆμ² μμ΄λλ₯Ό return νλλ‘ solution ν¨μλ₯Ό μμ±ν΄ μ£ΌμΈμ.
# νμ΄
λ΄ νμ΄
def solution(new_id):
new_id = new_id.lower()
answer = ''
for word in new_id: # ν΄λΉ 쑰건μ λ§κ² or μ°μ°μλ₯Ό μ¬μ©ν΄ 쑰건문μ λ¬μλ€.
if word == '-' or word == '_' or word == '.' or word.isdigit() or word.isalpha():
answer += word
else:
pass
while '..' in answer: # '..'μ΄ answerμ μμ λκΉμ§
answer = answer.replace('..', '.')
while answer.startswith('.') or answer.endswith('.'):
# whileλ¬Έ λ΄λΆλ‘ λ£μκ³ , 쑰건μ λ°λΌ startswith('.')μ endswith('.')νλ©΄ ν΄λΉ λ¬Έμλ λΉΌκ³ λ€μ
# answer λ¬Έμμ΄μ ν λΉνλ€.
if answer.startswith('.'):
answer = answer[1:]
elif answer.endswith('.'):
answer = answer[:-1]
if len(answer) == 0: # answerμ κΈΈμ΄κ° 0μ΄λ©΄ 'a'λ₯Ό μΆκ°
answer += 'a'
if len(answer) >= 16: # answerμ κΈΈμ΄κ° 16μ΄μμ΄λ©΄ 15κ°μ μμ λ¬Έμμ΄λ§ λ¨κΈ°κΈ°.
answer = answer[:15]
# κ³μ μλλλλ§.. μκ³ λ³΄λ μΈλ±μ€ μ€μ μ μλͺ»ν΄μ κ³μ λͺ» νκ³ μλ€κ° κ²¨μ° λ°κ²¬νκ³ κ³ μ³€λ€...
if answer.endswith('.'):
answer = answer[:-1] #
while len(answer) < 3: # μμ λ§μ°¬κ°μ§. answerμ κΈΈμ΄κ° 3μ΄ λ λκΉμ§ λ°λ³΅νλ€.
answer += answer[-1]
return answer
λ¨μ νμ΄(λΈλ‘κ·Έ μ°Έκ³ )
import re
def solution(new_id):
answer = ''
answer = re.sub('[^a-z\d\_\-\.]','',new_id.lower())
# μ κ·ννμ : a~zκΉμ§, _, -, .λ§μ answerμ λ΄λλ€. + λ΄κΈ΄ answerμ λ¬Έμλ μλ¬Έμλ‘ μΉννλ€.
answer = re.sub('\.\.+', '.', answer)
# .. μ΄ λ°λ³΅λλ©΄ .λ‘ λ°κΎΈλΌλ μλ―Έ..? μ¬μ€ μ΄ λ€μ μ½λλΆν°λ μ λͺ¨λ₯΄κ² λ€.
answer = re.sub('^\.', '', answer)
if answer == '':
answer = 'a'
answer = re.sub('\.$','', answer[:15])
if len(answer) < 3:
return answer.ljust(3, answer[-1])
return answer
# little_potato.log λ λΈλ‘κ·Έλ₯Ό μ°Έκ³ νλλ°, μ κ·ννμμ λν μ΄ν΄κ° μ’ λ μμ΄μΌ ν λ―νλ€.
μ κ·ννμμ μ¬μ©ν μ½λλ€.
μ κ·ννμ (Regular expressions) μ νΉμ ν κ·μΉμ κ°μ§ λ¬Έμμ΄μ μ§ν©μ νννλ λ° μ¬μ©νλ νμ μΈμ΄μ΄λ€. 볡μ‘ν λ¬Έμμ΄μ κ²μκ³Ό μΉνμ μν΄ μ¬μ©λλ©°, Python λΏλ§ μλλΌ λ¬Έμμ΄μ μ²λ¦¬νλ λͺ¨λ κ³³μμ μ¬μ©λλ€. μ.. μμ§ μνΈλ₯Ό 보λ λ―ν λν΄ν¨κ³Ό μ΄λ €μμ΄ μκΈ΄ νλ°,(γ γ γ ) μ κ·ννμμ μ’ λ 곡λΆλ₯Ό νκ³ μ¬μ©ν΄μΌ ν λ―νλ€. μ½λ μμ²΄κ° κ΅μ₯ν κ°κ²°ν΄μ§κ³ ν¨μ¨μ±λ λμ μ μ©ν λꡬμ΄λ, μΆν κ°λ μ λΆλΆμ λ€μ μ 리ν΄μ μ¬λ €λ³΄κ² λ€.
μΆμ²: https://velog.io/@nellroll/%EC%8B%A0%EA%B7%9C-%EC%95%84%EC%9D%B4%EB%94%94-%EC%B6%94%EC%B2%9C
μ κ· μμ΄λ μΆμ²
νλ‘κ·Έλλ¨Έμ€ lv1 μ κ· μμ΄λ μΆλ ₯ νμ΄μ¬
velog.io