๐ŸŒžAlgorithm/๐Ÿ”ฅprogrammers

[programmers] ๊ด„ํ˜ธ ๋ณ€ํ™˜ - 2020 KAKAO BLIND RECRUITMENT

๋ฟŒ์•ผ._. 2021. 9. 6. 12:25

<๊ด„ํ˜ธ ๋ณ€ํ™˜>

๋ฌธ์ œ(์ถœ์ฒ˜: https://school.programmers.co.kr/learn/courses/30/lessons/60058)

 

 

๋ฌธ์ œ ํ’€์ด

   - my solution

def isbalance(p): #๊ท ํ˜•์žก์ธ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด: u,v
    u,v=[],[]
    for i in range(1,len(p)+1):
        if p[:i].count("(") == p[:i].count(")"):
            u=p[:i]
            v=p[i:]
            break
    return u,v

def isright(x): #์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด
    stack=[]
    result=True
    for i in x:
        if i=='(':
            stack.append(i)
        else:
            if len(stack)!=0:
                stack.pop()
            else:
                result=False
    return result

def recur(p):
    answer=''
    if len(p)!=0: # ์ž…๋ ฅ์ด ๋นˆ ๋ฌธ์ž์—ด์ด ์•„๋‹Œ ๊ฒฝ์šฐ
        u,v=isbalance(p) # ๊ท ํ˜•์žกํžŒ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด u,v๋กœ ๋ถ„๋ฆฌ
        if isright(u)==True: # u๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์ด๋ผ๋ฉด
            answer+=u
            if len(v)!=0:
                answer += recur(v)
        else: # u๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์ด ์•„๋‹ˆ๋ผ๋ฉด
            answer='('+recur(v)+')'
            x=u[1:len(u)-1] # ์ฒซ๋ฒˆ์งธ์™€ ๋งˆ์ง€๋ง‰ ๋ฌธ์ž ์ œ๊ฑฐ
            for i in x: # ๋‚˜๋จธ์ง€ ๋ฌธ์ž์—ด์˜ ๊ด„ํ˜ธ ๋ฐฉํ–ฅ์„ ๋’ค์ง‘์–ด์„œ ๋ถ™์ด๊ธฐ
                if i=='(':
                    answer+=')'
                else:
                    answer+='('
    return answer
        

def solution(p):
    answer = ''
    answer=recur(p)

    return answer

 

๋ช‡ ๋ฒˆ์ด๋‚˜ ์ด ๋ฌธ์ œ๋ฅผ ๋ดค์—ˆ์ง€๋งŒ ๊ฒ๋จน๊ณ  ๋„์ „ํ•˜์ง€ ์•Š์•˜๋˜ ๋ฌธ์ œ์ด๋‹ค

์ด๋ฒˆ์— ๋ฌธ์ œ๋ฅผ ์ฐจ๊ทผ์ฐจ๊ทผ ์ฝ์–ด๋ดค์ง€๋งŒ ์ฒ˜์Œ์—๋Š” ๋™๊ณต ์ง€์ง„... ๐Ÿ˜ฅ

ํ•˜์ง€๋งŒ ์กฐ๊ธˆ์˜ ํžŒํŠธ๋„ ์–ป์œผ๋ฉด์„œ ๋ฌธ์ œ์— ๋‚˜์™€์žˆ๋Š” ์กฐ๊ฑด์„ ํ•˜๋‚˜์”ฉ ํ•ด๊ฒฐํ•ด๊ฐ€๊ธฐ ์‹œ์ž‘!

 

1) ์•„๋ž˜์™€ ๊ฐ™์ด ํ•จ์ˆ˜๋ฅผ 3๊ฐœ๋กœ ๊ตฌํ˜„

โ‘  ๊ท ํ˜• ์žกํžŒ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด๋กœ ๋ถ„๋ฆฌ โ‘ก ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด ํŒ๋ณ„ โ‘ข ์กฐ๊ฑด์— ๋งž๊ฒŒ ์žฌ๊ท€๋ฅผ ์œ„ํ•œ ํ•จ์ˆ˜

์กฐ๊ธˆ ๋งŽ์ด ํ•จ์ˆ˜๋ฅผ ๋‚˜๋ˆˆ ๊ฒƒ ๊ฐ™์ง€๋งŒ ์ฐจ๊ทผ์ฐจ๊ทผ ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ์ œ ๊ธฐ์ค€์— ๋งž์ถฐ ๋‚˜๋ˆ ๋ณด์•˜๋‹ค

 

2) ํ•จ์ˆ˜ ์„ค๋ช…

โ‘  ๊ท ํ˜•์žกํžŒ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด๋กœ ๋ถ„๋ฆฌ: count๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๊ฐœ์ˆ˜๊ฐ€ ๊ฐ™์„ ๋•Œ u, v๋ฅผ ๋ถ„๋ฆฌ

โ‘ก ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด ํŒ๋ณ„: stack์„ ํ™œ์šฉํ•˜์—ฌ '(' ์ผ ๋•Œ ์ถ”๊ฐ€, ')'์ผ ๋•Œ ์ œ๊ฑฐํ•˜์—ฌ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์ธ์ง€ ํŒ๋ณ„

โ‘ข ์กฐ๊ฑด์— ๋งž๊ฒŒ ์žฌ๊ท€๋ฅผ ์œ„ํ•œ ํ•จ์ˆ˜: ๋ฌธ์ œ์—์„œ ๋งํ•œ 1~4์˜ ๊ณผ์ •์„ ๊ตฌํ˜„

 


์ƒ๊ฐ๐Ÿค”

 

๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•œ ํ›„์— ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ์ฝ”๋“œ๋ฅผ ๋ณด๊ณ  ๋น„๊ตํ•ด๋ณด๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์กŒ๋‹ค.

์กฐ๊ธˆ ๋” ๊ฐ„๊ฒฐํ•˜๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ์ง€๋งŒ, ์˜ค๋Š˜์˜ ๋‚˜๋กœ์„œ๋Š” ์ด๊ฒŒ ์ตœ์„ ์ด์—ˆ๋‹ค๋Š” ์ƒ๊ฐ๋„ ๋“ค์—ˆ๋‹ค.

 

๋‚ด๊ฐ€ ์ƒ๊ฐํ•˜๊ธฐ์— ์ด ๋ฌธ์ œ์˜ ํฌ์ธํŠธ๋Š”

1) ๋ฌธ์ œ๋ฅผ ์ฝ๊ณ  ๋”ฐ๋ผ์„œ ๊ตฌํ˜„ํ•˜๋Š” ๋Šฅ๋ ฅ

์ด์—ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค.


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