[ํ๋ก๊ทธ๋๋จธ์ค/python] 2021 KAKAO BLIND RECRUITMENT : ์ ๊ท ์์ด๋ ์ถ์ฒ
๋ฌธ์ ์ค๋ช
์นด์นด์ค์ ์
์ฌํ ์ ์
๊ฐ๋ฐ์ ๋ค์ค๋ "์นด์นด์ค๊ณ์ ๊ฐ๋ฐํ"์ ๋ฐฐ์น๋์ด, ์นด์นด์ค ์๋น์ค์ ๊ฐ์
ํ๋ ์ ์ ๋ค์ ์์ด๋๋ฅผ ์์ฑํ๋ ์
๋ฌด๋ฅผ ๋ด๋นํ๊ฒ ๋์์ต๋๋ค. "๋ค์ค"์๊ฒ ์ฃผ์ด์ง ์ฒซ ์
๋ฌด๋ ์๋ก ๊ฐ์
ํ๋ ์ ์ ๋ค์ด ์นด์นด์ค ์์ด๋ ๊ท์น์ ๋ง์ง ์๋ ์์ด๋๋ฅผ ์
๋ ฅํ์ ๋, ์
๋ ฅ๋ ์์ด๋์ ์ ์ฌํ๋ฉด์ ๊ท์น์ ๋ง๋ ์์ด๋๋ฅผ ์ถ์ฒํด์ฃผ๋ ํ๋ก๊ทธ๋จ์ ๊ฐ๋ฐํ๋ ๊ฒ์
๋๋ค.
๋ค์์ ์นด์นด์ค ์์ด๋์ ๊ท์น์
๋๋ค.
- ์์ด๋์ ๊ธธ์ด๋ 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์ ๋ํ๋ ์ ์๋ ํน์๋ฌธ์๋ -_.~!@#$%^&*()=+[{]}:?,<>/ ๋ก ํ์ ๋ฉ๋๋ค.
์ ๋ต
def solution(new_id):
answer = ''
# 1๋จ๊ณ : ๋ชจ๋ ๋๋ฌธ์ ์๋ฌธ์๋ก ์นํ
new_id = new_id.lower()
# 2๋จ๊ณ : ์๋ฌธ์, ์ซ์, ๊ฐ๋ฅ ๋ฌธ์ ์ ์ธ ์ ๊ฑฐ ํ answer์ ์ ์ฅ
sp = ["-", "_", "."]
for i in new_id:
if i.isalnum() or i in sp:
answer += i
# 3๋จ๊ณ : .๊ฐ ๋๋ฒ ์ด์ ๋์ฌ ๋ . ํ๋๋ก ์นํ
while ".." in answer:
answer = answer.replace("..", ".")
# 4๋จ๊ณ : ์ฒ์์ด๋ ๋์ . ์์นํ๋ฉด ์ ๊ฑฐ
if answer and answer[0] == ".":
answer = answer[1:]
if answer and answer[-1] == ".":
answer = answer[:-1]
# 5๋จ๊ณ : ๋น ๋ฌธ์์ด์ด๋ฉด a ๋์
if answer == "":
return "aaa"
# 6๋จ๊ณ : 16์ ์ด์์ด๋ฉด 16์๋ถํฐ ์ญ์ , ๋ง์ง๋ง ๋ฌธ์ .์ด๋ฉด ์ญ์
if len(answer) >= 16:
answer = answer[:15]
if answer[-1] == ".":
answer = answer[:-1]
# 7๋จ๊ณ : 2์ ์ดํ๋ผ๋ฉด ๋ง์ง๋ง ๋ฌธ์ 3์ ๋ ๋๊น์ง ๋ฐ๋ณต
elif len(answer) <= 2:
answer += answer[-1]*(3-len(answer))
return answer
3๋จ๊ณ์์ while๋ฌธ์ ์ฌ์ฉํ์ฌ ".."์ด answer์ ํฌํจ๋ ๋์ ".."์ "."์ผ๋ก ์นํํ๋ค.
"...."์ผ ๊ฒฝ์ฐ๋ "..." -> ".." -> "." ์ผ๋ก ๋ฐ๋๋ฏ๋ก .์ด ์ฌ๋ฌ๋ฒ ๋์ค๋๋ผ๋ ๊ฐ๋ฅํ๋ค.
4๋จ๊ณ์์ answer์ ์ฒซ๋ฌธ์์ ๋๋ฌธ์๋ฅผ ํ์ธํ ๋ answer๊ฐ ๋น์ด์๋์ง ํ์ธ ํ ์ ๊ฑฐํด์ผํ๋ค.
answer๋ฅผ ํ์ธํ์ง ์๊ณ ๋ฐ๋ก answer[0]์ answer[-1]์ ํ์ธํ์ ๋
answer๊ฐ ๋น์ด์๋ค๋ฉด ์ธ๋ฑ์ค ์๋ฌ๊ฐ ๋๋ค.
5๋จ๊ณ์์ ๋น ๋ฌธ์์ด์ผ ๋ a๋ฅผ ๋์ ํ ํ 7๋จ๊ณ๋ฅผ ๊ฑฐ์ณ์ผํ๋ค.
๊ทธ๋ฌ๋ ๋น ๋ฌธ์์ด์ด๋ฉด ๊ฒฐ๊ณผ์ ์ผ๋ก aaa๋ฅผ ๋ฐํํด์ผํ๊ธฐ ๋๋ฌธ์
๋ฐ๋ก aaa๋ฅผ returnํ๋ค.