2021. 1. 27. 02:05γπ Algorithm/πͺπ» Python λ¬Έμ νμ΄
λ¬Έμ μ€λͺ
μΉ΄μΉ΄μ€μ μ
μ¬ν μ μ
κ°λ°μ λ€μ€λ μΉ΄μΉ΄μ€κ³μ κ°λ°νμ λ°°μΉλμ΄, μΉ΄μΉ΄μ€ μλΉμ€μ κ°μ
νλ μ μ λ€μ μμ΄λλ₯Ό μμ±νλ μ
무λ₯Ό λ΄λΉνκ² λμμ΅λλ€. λ€μ€μκ² μ£Όμ΄μ§ 첫 μ
무λ μλ‘ κ°μ
νλ μ μ λ€μ΄ μΉ΄μΉ΄μ€ μμ΄λ κ·μΉμ λ§μ§ μλ μμ΄λλ₯Ό μ
λ ₯νμ λ, μ
λ ₯λ μμ΄λμ μ μ¬νλ©΄μ κ·μΉμ λ§λ μμ΄λλ₯Ό μΆμ²ν΄μ£Όλ νλ‘κ·Έλ¨μ κ°λ°νλ κ²μ
λλ€.
λ€μμ μΉ΄μΉ΄μ€ μμ΄λμ κ·μΉμ
λλ€.
- μμ΄λμ κΈΈμ΄λ 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 ν¨μλ₯Ό μμ±ν΄ μ£ΌμΈμ.
μ ν μ¬ν
- new_idλ κΈΈμ΄ 1 μ΄μ 1,000 μ΄νμΈ λ¬Έμμ΄μ λλ€.
- new_idλ μνλ²³ λλ¬Έμ, μνλ²³ μλ¬Έμ, μ«μ, νΉμλ¬Έμλ‘ κ΅¬μ±λμ΄ μμ΅λλ€.
- new_idμ λνλ μ μλ νΉμλ¬Έμλ -_.~!@#$%^&*()=+[{]}:?,<>/ λ‘ νμ λ©λλ€.
μ μΆλ ₯ μμ
νμ΄ κ³Όμ
λ¬Έμ μ체μ ꡬνμ κ·Έλ κ² μ΄λ ΅μ§ μμμ§λ§, μ§μμ§μν κ·μΉλ€μ΄ λ§μ μ κ²½μ¨μΌλ κ² λ§κ³ idx μ κ·Όμ λ§μ΄ νλλ‘ κ΅¬ννμ¬ index μλ¬κ° λμ§ μκ² μ‘°μ¬ν΄μΌνλ€. μ²μ ꡬννμ λλ ν μ€νΈ μΌμ΄μ€ 21,22,25λ§ κ³μ νλ €μ λκ° μλͺ»λκ±° κ°λ€κ³ μκ°λλ level2 λΆλΆμ λ€μ ꡬννμλλ ν΄κ²°λμλ€. μ£Όμμ²λ¦¬λ‘ levelλ³λ‘ μ΄λ»κ² ꡬννλμ§ μ μ΄λμμΌλ μ°Έκ³ νλ©΄ μ’μ κ² κ°μ΅λλ€ : )
import string
def level_4 (answer):
# level 4
while answer and answer[0] == '.':
answer.pop(0)
while answer and answer[-1] == '.':
answer.pop()
return answer
# level 2
def level_2(new_id):
check_id = set(['-', '_', '.'])
for word in new_id:
if word not in string.punctuation:
continue
else:
if word not in check_id:
new_id = new_id.replace(word, '')
return new_id
def solution(new_id):
answer = []
new_id = new_id.lower() # level 1
new_id = level_2(new_id) # level 2
# level 3
for idx, char in enumerate(new_id):
if char == '.' and idx < len(new_id) -1 and new_id[idx+1] =='.' :
continue
else:
answer.append(char)
answer = level_4(answer) # level 4
# level 5
if len(answer) == 0:
answer = ['a']
# level 6
if len(answer) >= 16:
answer = answer[0:15]
answer = level_4(answer)
# level 7
if len(answer) <= 2:
while len(answer) < 3:
answer.append(answer[-1])
return ''.join(answer)
if __name__ == "__main__":
print(solution("...abc..."))
print(solution("...!@BaT#*..y.abcdefghijklm"))
print(solution("z-+.^."))
print(solution("=.="))
print(solution(".......b"))
print(solution("123_.def"))
print(solution(".1."))
print(solution("3.2............3"))
print(solution("~!@#$%^&*()=+[{]}:?,<>"))
'π Algorithm > πͺπ» Python λ¬Έμ νμ΄' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Python - νλ‘κ·Έλλ¨Έμ€ Level3] 2*n νμΌλ§ (0) | 2021.02.01 |
---|---|
[Python - νλ‘κ·Έλλ¨Έμ€ Level2] κ°μ₯ ν° μ (0) | 2021.01.26 |
[Python - νλ‘κ·Έλλ¨Έμ€ Level1] μμ£Όνμ§ λͺ»ν μ μ (0) | 2021.01.26 |