μ κ· μμ΄λ μΆμ²
λ¬Έμ μ€λͺ
μΉ΄μΉ΄μ€μ μ
μ¬ν μ μ
κ°λ°μ λ€μ€λ "μΉ΄μΉ΄μ€κ³μ κ°λ°ν"μ λ°°μΉλμ΄, μΉ΄μΉ΄μ€ μλΉμ€μ κ°μ
νλ μ μ λ€μ μμ΄λλ₯Ό μμ±νλ μ
무λ₯Ό λ΄λΉνκ² λμμ΅λλ€. "λ€μ€"μκ² μ£Όμ΄μ§ 첫 μ
무λ μλ‘ κ°μ
νλ μ μ λ€μ΄ μΉ΄μΉ΄μ€ μμ΄λ κ·μΉμ λ§μ§ μλ μμ΄λλ₯Ό μ
λ ₯νμ λ, μ
λ ₯λ μμ΄λμ μ μ¬νλ©΄μ κ·μΉμ λ§λ μμ΄λλ₯Ό μΆμ²ν΄μ£Όλ νλ‘κ·Έλ¨μ κ°λ°νλ κ²μ
λλ€.
λ€μμ μΉ΄μΉ΄μ€ μμ΄λμ κ·μΉμ
λλ€.
- μμ΄λμ κΈΈμ΄λ 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 κ°μ΄ "...!@BaT#*..y.abcdefghijklm" λΌλ©΄, μ 7λ¨κ³λ₯Ό κ±°μΉκ³ λλ©΄ new_idλ μλμ κ°μ΄ λ³κ²½λ©λλ€.
1λ¨κ³ λλ¬Έμ 'B'μ 'T'κ° μλ¬Έμ 'b'μ 't'λ‘ λ°λμμ΅λλ€.
"...!@BaT#*..y.abcdefghijklm" → "...!@bat#*..y.abcdefghijklm"
2λ¨κ³ '!', '@', '#', '*' λ¬Έμκ° μ κ±°λμμ΅λλ€.
"...!@bat#*..y.abcdefghijklm" → "...bat..y.abcdefghijklm"
3λ¨κ³ '...'μ '..' κ° '.'λ‘ λ°λμμ΅λλ€.
"...bat..y.abcdefghijklm" → ".bat.y.abcdefghijklm"
4λ¨κ³ μμ΄λμ μ²μμ μμΉν '.'κ° μ κ±°λμμ΅λλ€.
".bat.y.abcdefghijklm" → "bat.y.abcdefghijklm"
5λ¨κ³ μμ΄λκ° λΉ λ¬Έμμ΄μ΄ μλλ―λ‘ λ³νκ° μμ΅λλ€.
"bat.y.abcdefghijklm" → "bat.y.abcdefghijklm"
6λ¨κ³ μμ΄λμ κΈΈμ΄κ° 16μ μ΄μμ΄λ―λ‘, μ²μ 15μλ₯Ό μ μΈν λλ¨Έμ§ λ¬Έμλ€μ΄ μ κ±°λμμ΅λλ€.
"bat.y.abcdefghijklm" → "bat.y.abcdefghi"
7λ¨κ³ μμ΄λμ κΈΈμ΄κ° 2μ μ΄νκ° μλλ―λ‘ λ³νκ° μμ΅λλ€.
"bat.y.abcdefghi" → "bat.y.abcdefghi"
λ°λΌμ μ κ· μ μ κ° μ λ ₯ν new_idκ° "...!@BaT#*..y.abcdefghijklm"μΌ λ, λ€μ€μ νλ‘κ·Έλ¨μ΄ μΆμ²νλ μλ‘μ΄ μμ΄λλ "bat.y.abcdefghi" μ λλ€.
[λ¬Έμ ]
μ κ· μ μ κ° μ λ ₯ν μμ΄λλ₯Ό λνλ΄λ new_idκ° λ§€κ°λ³μλ‘ μ£Όμ΄μ§ λ, "λ€μ€"κ° μ€κ³ν 7λ¨κ³μ μ²λ¦¬ κ³Όμ μ κ±°μΉ νμ μΆμ² μμ΄λλ₯Ό return νλλ‘ solution ν¨μλ₯Ό μμ±ν΄ μ£ΌμΈμ.
[μ νμ¬ν]
new_idλ κΈΈμ΄ 1 μ΄μ 1,000 μ΄νμΈ λ¬Έμμ΄μ
λλ€.
new_idλ μνλ²³ λλ¬Έμ, μνλ²³ μλ¬Έμ, μ«μ, νΉμλ¬Έμλ‘ κ΅¬μ±λμ΄ μμ΅λλ€.
new_idμ λνλ μ μλ νΉμλ¬Έμλ -_.~!@#$%^&*()=+[{]}:?,<>/ λ‘ νμ λ©λλ€.
[μ μΆλ ₯ μ]
nonew_idresult
μ1 | "...!@BaT#*..y.abcdefghijklm" | "bat.y.abcdefghi" |
μ2 | "z-+.^." | "z--" |
μ3 | "=.=" | "aaa" |
μ4 | "123_.def" | "123_.def" |
μ5 | "abcdefghijklmn.p" | "abcdefghijklmn" |
μ μΆλ ₯ μμ λν μ€λͺ
μ
μΆλ ₯ μ #1
λ¬Έμ μ μμμ κ°μ΅λλ€.
μ
μΆλ ₯ μ #2
7λ¨κ³λ₯Ό κ±°μΉλ λμ new_idκ° λ³ννλ κ³Όμ μ μλμ κ°μ΅λλ€.
1λ¨κ³ λ³ν μμ΅λλ€.
2λ¨κ³ "z-+.^." → "z-.."
3λ¨κ³ "z-.." → "z-."
4λ¨κ³ "z-." → "z-"
5λ¨κ³ λ³ν μμ΅λλ€.
6λ¨κ³ λ³ν μμ΅λλ€.
7λ¨κ³ "z-" → "z--"
μ
μΆλ ₯ μ #3
7λ¨κ³λ₯Ό κ±°μΉλ λμ new_idκ° λ³ννλ κ³Όμ μ μλμ κ°μ΅λλ€.
1λ¨κ³ λ³ν μμ΅λλ€.
2λ¨κ³ "=.=" → "."
3λ¨κ³ λ³ν μμ΅λλ€.
4λ¨κ³ "." → "" (new_idκ° λΉ λ¬Έμμ΄μ΄ λμμ΅λλ€.)
5λ¨κ³ "" → "a"
6λ¨κ³ λ³ν μμ΅λλ€.
7λ¨κ³ "a" → "aaa"
μ
μΆλ ₯ μ #4
1λ¨κ³μμ 7λ¨κ³κΉμ§ κ±°μΉλ λμ new_id("123_.def")λ λ³νμ§ μμ΅λλ€. μ¦, new_idκ° μ²μλΆν° μΉ΄μΉ΄μ€μ μμ΄λ κ·μΉμ λ§μ΅λλ€.
μ
μΆλ ₯ μ #5
1λ¨κ³ λ³ν μμ΅λλ€.
2λ¨κ³ λ³ν μμ΅λλ€.
3λ¨κ³ λ³ν μμ΅λλ€.
4λ¨κ³ λ³ν μμ΅λλ€.
5λ¨κ³ λ³ν μμ΅λλ€.
6λ¨κ³ "abcdefghijklmn.p" → "abcdefghijklmn." → "abcdefghijklmn"
7λ¨κ³ λ³ν μμ΅λλ€.
# μ κ·ννμ μ¬μ©
import re
def solution(new_id):
answer = ''
# μλ¬Έμλ‘ μΉν
new_id = new_id.lower()
# μνλ²³ μλ¬Έμ, -, ., _, μ«μ λΉΌκ³ μ κ±°
new_id = re.sub(r'[^a-z\-\.\_\d]','', new_id)
# .μ΄ 2κ° μ΄μ λ°λ³΅λλ©΄ μ κ±°
new_id = re.sub(r'\.\.+', '.', new_id)
# μμλ¬Έμκ° .μ΄λ©΄ μ κ±°
new_id = re.sub(r'^\.', '', new_id)
# λλ¬Έμκ° .μ΄λ©΄ μ κ±°
new_id = re.sub(r'\.$', '', new_id)
# μ무κ²λ μμΌλ©΄ a λμ
if len(new_id) == 0:
new_id = re.sub(r'', 'a', new_id)
# κΈΈμ΄κ° 16μ΄μμ΄λ©΄ 15κ°λ‘ μλ₯΄κΈ° + λ λ¬Έμκ° .μ΄λ©΄ μ κ±°
new_id = re.sub('\.$', '', new_id[0:15])
# κΈΈμ΄κ° 2 μ΄νμ΄λ©΄ 3μ΄ λ λκΉμ§ λ§μ§λ§ λ¬Έμ μΆκ°
while len(new_id) < 3:
new_id += new_id[-1:]
answer = new_id
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
# μ κ·ννμ μ¬μ© X νμ΄
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
μ κ·ννμ κ³΅λΆ !!!!!!
- μ κ·ννμ λ΄μμ | --> or
+ λ¬Έμμ΄ μ¬λΌμ΄μ±, μΈλ±μ± μ΅μν΄μ§κΈ° [-1:] --> λ λ¬Έμ ν΄λΉ
+ [:-1] --> λ λ¬Έμ μ κΉμ§ μΆλ ₯
'Algorithms > Programmers' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
μ€ν/ν lv2. κΈ°λ₯ κ°λ° (0) | 2021.07.25 |
---|---|
μ€ν/ν 1λ² lv2 (0) | 2021.03.05 |
ν΄μ lv3. λ² μ€νΈμ¨λ² (0) | 2021.02.26 |
ν΄μ - lv2 μμ₯ (1) | 2021.02.25 |
ν΄μ lv2. μ νλ²νΈ λͺ©λ‘ (리μ€νΈ vs ν΄μ) (1) | 2021.02.25 |