๐ŸŒžAlgorithm/๐Ÿ”ฅprogrammers

[programmers] ์‹ ๊ทœ ์•„์ด๋”” ์ถ”์ฒœ - 2021 KAKAO BLIND RECRUITMENT

๋ฟŒ์•ผ._. 2021. 1. 27. 23:00

์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ ์—ฐ์Šต - 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 ๊ฐ’์ด...!@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์— ๋‚˜ํƒ€๋‚  ์ˆ˜ ์žˆ๋Š” ํŠน์ˆ˜๋ฌธ์ž๋Š” -_.~!@#$%^&*()=+[{]}:?,<>/ ๋กœ ํ•œ์ •๋ฉ๋‹ˆ๋‹ค.

 

 

๋ฌธ์ œ ํ’€์ด

   - my solution

def solution(new_id):
    answer = ''
    
    new_id=new_id.lower() #1๋‹จ๊ณ„
    
    new_id=list(new_id) #list๋กœ ๋ณ€ํ™˜
    
    i=0
    while(i<len(new_id)): #2๋‹จ๊ณ„
        x=new_id[i]
        if(x.isalpha() or x.isdigit() or x=='-' or x=='_' or x=='.'):
            i+=1
            pass
        else:
            del new_id[i]
    
    i=0
    if(len(new_id)!=0):
        while (i<len(new_id)-1): #3๋‹จ๊ณ„
            if(new_id[i]=="." and new_id[i]==new_id[i+1]):
                del new_id[i+1]
            else:
                i+=1
    
    #4๋‹จ๊ณ„
    if(len(new_id)!=0):
        if(new_id[0]=='.'):
            del new_id[0]
    if(len(new_id)!=0):
        if(new_id[-1]=='.'):
            del new_id[-1]
    
    #5๋‹จ๊ณ„
    if(len(new_id)==0):
        new_id.append("a")
    
    #6๋‹จ๊ณ„
    if(len(new_id)>=16):
        new_id=new_id[:15]
        if(new_id[-1]=='.'):
            del new_id[-1]
    
    #7๋‹จ๊ณ„
    while(len(new_id)<=2):
        new_id.append(new_id[-1])
        
    
    answer=''.join(new_id)
    return answer

  ๋ฌธ์ œ ๊ธธ์ด๋Š” ๊ธธ์ง€๋งŒ ์•„์ด๋”” ์ถ”์ฒœ ๋‹จ๊ณ„์— ๋งž์ถ”์–ด ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜๋ฉด ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

    1๋‹จ๊ณ„ lower()๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋“  ๋Œ€๋ฌธ์ž๋ฅผ ์†Œ๋ฌธ์ž๋กœ ์น˜ํ™˜ ํ›„ ์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด list๋กœ ๋ฐ”๊ฟˆ

    2๋‹จ๊ณ„ ๋ฌธ์ž์—ด์„ ์ˆœํšŒํ•˜๋ฉฐ ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž, ์ˆซ์ž, ๋นผ๊ธฐ(-), ๋ฐ‘์ค„(_), ๋งˆ์นจํ‘œ(.)๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ๋ฌธ์ž๋ฅผ ์ œ๊ฑฐ

    3๋‹จ๊ณ„ ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๊ฐ€ 0์ด ์•„๋‹ ๋•Œ ๋งˆ์นจํ‘œ๊ฐ€ 2๋ฒˆ ์ด์ƒ ์—ฐ์†๋œ ๋ถ€๋ถ„์„ ์ œ๊ฑฐํ•˜์—ฌ ํ•˜๋‚˜๋งŒ ๋‚จ๊ฒจ๋‘ 

    4๋‹จ๊ณ„ ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๊ฐ€ 0์ด ์•„๋‹ ๋•Œ ์ฒ˜์Œ์ด๋‚˜ ๋์— ๋งˆ์นจํ‘œ๊ฐ€ ์œ„์น˜ํ•œ๋‹ค๋ฉด ์ œ๊ฑฐ

    5๋‹จ๊ณ„ ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๊ฐ€ 0์ผ ๋•Œ a ๋Œ€์ž…

    6๋‹จ๊ณ„ ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๊ฐ€ 16์ž ์ด์ƒ์ด๋ฉด 15์ž๊นŒ์ง€ ๋Š์€ ํ›„ ๋งˆ์ง€๋ง‰์— ๋งˆ์นจํ‘œ๊ฐ€ ์œ„์น˜ํ•˜๋ฉด ์ œ๊ฑฐ

    7๋‹จ๊ณ„ ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๊ฐ€ 2์ž ์ดํ•˜์ผ ๋•Œ, ๋งˆ์ง€๋ง‰ ๋ฌธ์ž๋ฅผ ๋ฌธ์ž์—ด ๊ธธ์ด๊ฐ€ 3์ด ๋  ๋•Œ๊นŒ์ง€ ์ถ”๊ฐ€

 

  ์ฒ˜์Œ์— ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜์˜€์„ ๋•Œ ๋ชจ๋“  ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ํ†ต๊ณผํ•˜์ง€ ๋ชปํ•˜์˜€๋‹ค.

  3๋‹จ๊ณ„, 4๋‹จ๊ณ„์—์„œ ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๊ฐ€ 0์ผ ๋•Œ์˜ ๊ฒฝ์šฐ๋ฅผ ์ฒ˜๋ฆฌํ•ด์ฃผ์ง€ ์•Š์•„ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์ด์—ˆ๋‹ค.

  ๊ทธ๋ž˜์„œ ์กฐ๊ฑด๋ฌธ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ๋ชจ๋“  ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ํ†ต๊ณผํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.


์ถœ์ฒ˜: ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ ์—ฐ์Šต, https://programmers.co.kr/learn/challenges