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 ์นด์นด์˜ค ์‹ ๊ทœ ์•„์ด๋”” ์ถ”์ฒœ ๋ฌธ์ œ