[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์‹ ๊ทœ ์•„์ด๋”” ์ถ”์ฒœ / ํŒŒ์ด์ฌ / python / 2021 KAKAO BLIND RECRUITMENT
Algorithm/Programmers

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์‹ ๊ทœ ์•„์ด๋”” ์ถ”์ฒœ / ํŒŒ์ด์ฌ / python / 2021 KAKAO BLIND RECRUITMENT

728x90
๋ฐ˜์‘ํ˜•

๐Ÿ’กsolutions )

๐Ÿ’ฌ ์ด 7๋‹จ๊ณ„๊นŒ์ง€ ์ฃผ์–ด์ง„ ์กฐ๊ฑด์„ ๋ชจ๋‘ ๊ตฌํ˜„ํ•˜๋ฉด ๋˜๋Š” ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ๋ฌธ์ œ๋‹ค.

๐Ÿ’ฌ ํ•ด๋‹น ๋ฌธ์ œ๋ฅผ ํ’€ ๋•Œ ์ฃผ์˜ํ•ด์•ผ ํ•  ์ ์€ ๋ฌธ์ž๋ฅผ ์ œ๊ฑฐํ•˜๊ฑฐ๋‚˜ ์Šฌ๋ผ์ด์‹ฑํ•  ๋•Œ ๋ฌธ์ž์—ด(ํ•ด๋‹น ๋ฌธ์ œํ’€์ด์—์„  ๋ฌธ์ž๋ฅผ ๋ฆฌ์ŠคํŠธ์— ์ €์žฅํ•˜์—ฌ ์‚ฌ์šฉํ–ˆ์Œ) ๊ธธ์ด๊ฐ€ 0์ด ์•„๋‹Œ์ง€, ์ธ๋ฑ์Šค ์—๋Ÿฌ๊ฐ€ ๋‚˜์ง€ ์•Š๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

๐Ÿ‘จ‍๐Ÿ’ปcode )

def solution(new_id):
    # 1๋‹จ๊ณ„
    new_id = new_id.lower()
    
    # 2,3๋‹จ๊ณ„
    id_list = []
    for i in new_id:
        if i.isalnum() or i in ['-', '_', '.']:
            if id_list:
                if i ==  '.' and id_list[-1] == '.':
                    continue
            id_list.append(i)
            
    # 4๋‹จ๊ณ„
    if id_list:
        if id_list[0] == '.':
            id_list = id_list[1:]
    if id_list:
        if id_list[-1] == '.':
            id_list.pop()
    
    # 5๋‹จ๊ณ„
    if not id_list:
        id_list.append('a')

    # 6๋‹จ๊ณ„
    if len(id_list) >= 16:
        id_list = id_list[:15]
        if id_list[-1] == '.':
            id_list.pop()
    
    # 7๋‹จ๊ณ„
    if len(id_list) <= 2:
        last = id_list[-1]
        while len(id_list) != 3:
            id_list.append(last)
    
    return ''.join(id_list)

 

๐Ÿ“Œdescription )

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ์‹ ๊ทœ ์•„์ด๋”” ์ถ”์ฒœ

์นด์นด์˜ค์— ์ž…์‚ฌํ•œ ์‹ ์ž… ๊ฐœ๋ฐœ์ž ๋„ค์˜ค๋Š” "์นด์นด์˜ค๊ณ„์ •๊ฐœ๋ฐœํŒ€"์— ๋ฐฐ์น˜๋˜์–ด, ์นด์นด์˜ค ์„œ๋น„์Šค์— ๊ฐ€์ž…ํ•˜๋Š” ์œ ์ €๋“ค์˜ ์•„์ด๋””๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์—…๋ฌด๋ฅผ ๋‹ด๋‹นํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. "๋„ค์˜ค"์—๊ฒŒ ์ฃผ์–ด์ง„ ์ฒซ ์—…๋ฌด๋Š” ์ƒˆ๋กœ

programmers.co.kr


๋ฌธ์ œ ์„ค๋ช…

์นด์นด์˜ค์— ์ž…์‚ฌํ•œ ์‹ ์ž… ๊ฐœ๋ฐœ์ž ๋„ค์˜ค๋Š” "์นด์นด์˜ค๊ณ„์ •๊ฐœ๋ฐœํŒ€"์— ๋ฐฐ์น˜๋˜์–ด, ์นด์นด์˜ค ์„œ๋น„์Šค์— ๊ฐ€์ž…ํ•˜๋Š” ์œ ์ €๋“ค์˜ ์•„์ด๋””๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์—…๋ฌด๋ฅผ ๋‹ด๋‹นํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. "๋„ค์˜ค"์—๊ฒŒ ์ฃผ์–ด์ง„ ์ฒซ ์—…๋ฌด๋Š” ์ƒˆ๋กœ ๊ฐ€์ž…ํ•˜๋Š” ์œ ์ €๋“ค์ด ์นด์นด์˜ค ์•„์ด๋”” ๊ทœ์น™์— ๋งž์ง€ ์•Š๋Š” ์•„์ด๋””๋ฅผ ์ž…๋ ฅํ–ˆ์„ ๋•Œ, ์ž…๋ ฅ๋œ ์•„์ด๋””์™€ ์œ ์‚ฌํ•˜๋ฉด์„œ ๊ทœ์น™์— ๋งž๋Š” ์•„์ด๋””๋ฅผ ์ถ”์ฒœํ•ด์ฃผ๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐœ๋ฐœํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
๋‹ค์Œ์€ ์นด์นด์˜ค ์•„์ด๋””์˜ ๊ทœ์น™์ž…๋‹ˆ๋‹ค.

  • ์•„์ด๋””์˜ ๊ธธ์ด๋Š” 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"

๋ฐ˜์‘ํ˜•