- Published on
๐ ๏ธ[ํ๋ก๊ทธ๋๋จธ์ค]-์ ๊ท์์ด๋์ถ์ฒ
๐๋ฌธ์ ์ค๋ช
์นด์นด์ค์ ์ ์ฌํ ์ ์ ๊ฐ๋ฐ์ ๋ค์ค๋ ์นด์นด์ค๊ณ์ ๊ฐ๋ฐํ์ ๋ฐฐ์น๋์ด, ์นด์นด์ค ์๋น์ค์ ๊ฐ์ ํ๋ ์ ์ ๋ค์ ์์ด๋๋ฅผ ์์ฑํ๋ ์ ๋ฌด๋ฅผ ๋ด๋นํ๊ฒ ๋์์ต๋๋ค. ๋ค์ค์๊ฒ ์ฃผ์ด์ง ์ฒซ ์ ๋ฌด๋ ์๋ก ๊ฐ์ ํ๋ ์ ์ ๋ค์ด ์นด์นด์ค ์์ด๋ ๊ท์น์ ๋ง์ง ์๋ ์์ด๋๋ฅผ ์ ๋ ฅํ์ ๋, ์ ๋ ฅ๋ ์์ด๋์ ์ ์ฌํ๋ฉด์ ๊ท์น์ ๋ง๋ ์์ด๋๋ฅผ ์ถ์ฒํด์ฃผ๋ ํ๋ก๊ทธ๋จ์ ๊ฐ๋ฐํ๋ ๊ฒ์ ๋๋ค. ๋ค์์ ์นด์นด์ค ์์ด๋์ ๊ท์น์ ๋๋ค.
- ์์ด๋์ ๊ธธ์ด๋ 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์ด ๋ ๋๊น์ง ๋ฐ๋ณตํด์ ๋์ ๋ถ์ ๋๋ค.
โ๏ธ๋ฌธ์ ํ์ด
ํ์ด์ฌ์ ๋ค์ํ ๋ด์ฅ ๋ฌธ์์ด ํจ์๋ค์ ์จ๋ณด๊ธฐ ์ข์ ๋ฌธ์ ์ด๋ค. ๋ฌธ์์ด ์กฐ์์ ์์ฃผ ์ฌ์ฉ๋๋ ๋ช๋ช ํน์ง์ ์ธ ํ์ด์ฌ ๋ด์ฅ ํจ์์ ๋ํด ๊ฐ๋ตํ ์๊ฐํด๋ณด๋๋ก ํ๊ฒ ๋ค.
lower()
: ๋ฌธ์์ด์ ๋ชจ๋ ์๋ฌธ์๋ก ๋ง๋๋ ํจ์์ด๋ค.
maketrans()
์ translate()
: ๋ฒ์ญํ ๋ฌธ์์ด ๋ณด๋๋ฅผ ๋ง๋ค๊ณ , ๋ณด๋๋ฅผ ๋ฐํ์ผ๋ก ํด๋น๋๋ ๋ฌธ์์ด์ ๋ฐ๊พธ๋ ๋ด์ฅํจ์์ด๋ค. ์ฒ์ ๋ณด๋ ๋ด์ฅํจ์๋ผ ์ฌ์ฉ์ ๋ฏ์ค์์ง๋ง, ์ํค๋ฅผ ์ ๊ทน ํ์ฉํ๋ฉฐ ์ฌ์ฉํด ๋๊ฐ๋ค. ์๋๋ ์ฌ์ฉ ์๋ฌธ์ด๋ค.
board = str.maketrans("๋ฐ๋ ๋ฌธ์์ด","๋ฐ๋ ๋ฌธ์์ด")
some_str = some_str.translate(board)
find(๋งค๊ฐ๋ณ์)
: ๋ฌธ์์ด ์์์ ์ฃผ์ด์ง ๋งค๊ฐ๋ณ์์ ์์น๊ฐ์ ๋ฐํํ๋ ๋ด์ฅํจ์.
replace(๋งค๊ฐ๋ณ์1, ๋งค๊ฐ๋ณ์2)
: ์ฒซ๋ฒ์งธ ๋งค๊ฐ๋ณ์๋ฅผ ๋๋ฒ์งธ ๋งค๊ฐ๋ณ์๋ก ๋ฐ๊ฟ์ฃผ๋ ๋ด์ฅํจ์.
strip(๋งค๊ฐ๋ณ์)
: ๋ฌธ์์ด ์ ๋์ ๋งค๊ฐ๋ณ์์ ๊ฐ์ ๊ฐ์ ์ฐพ์ ์ญ์ ํด์ฃผ๋ ๋ด์ฅํจ์. ๋ณํ์ผ๋ก lstrip()
๊ณผ rstrip()
์ด ์๋ค.
โจ๏ธํ์ด ์ฝ๋
def solution(new_id):
answer = new_id
# 5๋ฒ ์กฐ๊ฑด
if len(answer) == 0:
answer += 'a'
# 1๋ฒ ์กฐ๊ฑด
answer = answer.lower()
# 2๋ฒ ์กฐ๊ฑด
table = str.maketrans("~!@#$%^&*()=+[{]}:?,<>/"," ")
answer = answer.translate(table)
answer = "".join(answer.split())
# 3๋ฒ ์กฐ๊ฑด
while True:
if answer.find("..") != -1:
answer = answer.replace('..','.')
else:
break
# 4๋ฒ ์กฐ๊ฑด
while answer[0] == '.' or answer[-1] == '.':
answer = answer.strip('.')
if len(answer) == 0:
answer += 'a'
# 6๋ฒ ์กฐ๊ฑด
if len(answer) > 15:
answer = answer[:15]
# 7๋ฒ ์กฐ๊ฑด
while len(answer) <= 2:
answer += answer[-1]
return answer
์ถ์ฒ : ํ๋ก๊ทธ๋๋จธ์ค 2021 ์นด์นด์ค ์ ๊ท ์์ด๋ ์ถ์ฒ ๋ฌธ์