๐ŸŒžAlgorithm/๐Ÿ”ฅprogrammers

[programmers] ์ง์ง€์–ด ์ œ๊ฑฐํ•˜๊ธฐ - 2017 ํŒ์Šคํƒ€์šด

๋ฟŒ์•ผ._. 2021. 1. 11. 22:46

์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ ์—ฐ์Šต - 2017 ํŒ์Šคํƒ€์šด


<์ง์ง€์–ด ์ œ๊ฑฐํ•˜๊ธฐ>

๋ฌธ์ œ ์„ค๋ช…

 

์ง์ง€์–ด ์ œ๊ฑฐํ•˜๊ธฐ๋Š”, ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฌธ์ž์—ด์„ ๊ฐ€์ง€๊ณ  ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ๋จผ์ € ๋ฌธ์ž์—ด์—์„œ ๊ฐ™์€ ์•ŒํŒŒ๋ฒณ์ด 2๊ฐœ ๋ถ™์–ด ์žˆ๋Š” ์ง์„ ์ฐพ์Šต๋‹ˆ๋‹ค. ๊ทธ๋‹ค์Œ, ๊ทธ ๋‘˜์„ ์ œ๊ฑฐํ•œ ๋’ค, ์•ž๋’ค๋กœ ๋ฌธ์ž์—ด์„ ์ด์–ด ๋ถ™์ž…๋‹ˆ๋‹ค. ์ด ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•ด์„œ ๋ฌธ์ž์—ด์„ ๋ชจ๋‘ ์ œ๊ฑฐํ•œ๋‹ค๋ฉด ์ง์ง€์–ด ์ œ๊ฑฐํ•˜๊ธฐ๊ฐ€ ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค. ๋ฌธ์ž์—ด S๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ง์ง€์–ด ์ œ๊ฑฐํ•˜๊ธฐ๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด ์ฃผ์„ธ์š”. ์„ฑ๊ณต์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์œผ๋ฉด 1์„, ์•„๋‹ ๊ฒฝ์šฐ 0์„ ๋ฆฌํ„ดํ•ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด, ๋ฌธ์ž์—ด S = baabaa ๋ผ๋ฉด
b aa baa → bb aa → aa 
์˜ ์ˆœ์„œ๋กœ ๋ฌธ์ž์—ด์„ ๋ชจ๋‘ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ 1์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

 

 

์ œํ•œ ์‚ฌํ•ญ

 

- ๋ฌธ์ž์—ด์˜ ๊ธธ์ด : 1,000,000 ์ดํ•˜์˜ ์ž์—ฐ์ˆ˜
- ๋ฌธ์ž์—ด์€ ๋ชจ๋‘ ์†Œ๋ฌธ์ž๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

๋ฌธ์ œ ํ’€์ด

   - my solution

def solution(s):
    answer = 1
    
    temp=[]
    
    temp.append(s[0]) #์ฒซ๋ฒˆ์งธ ๊ฐ’ ์ถ”๊ฐ€
    for i in range(1,len(s)):
        if(len(temp)==0): #๊ธธ์ด๊ฐ€ 0์ด๋ฉด ๊ทธ๋ƒฅ ์ถ”๊ฐ€
            temp.append(s[i])
        elif(temp[-1]==s[i]): #๊ฐ™์€ ๊ฐ’์ด๋ฉด pop
            temp.pop()
        else: #๊ฐ™์€ ๊ฐ’์ด ์•„๋‹ˆ๋ฉด ์ถ”๊ฐ€
            temp.append(s[i])
    if(len(temp)!=0): #๊ธธ์ด๊ฐ€ 0์ด ์•„๋‹ˆ๋ฉด ์ง์ง€์–ด ์ œ๊ฑฐํ•˜๊ธฐ ์„ฑ๊ณต x
        answer=0

    return answer

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

 ํ•˜์ง€๋งŒ ์ด ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” ์‹œ๊ฐ„ ์ดˆ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•˜์˜€๋‹ค. pop ๋•Œ๋ฌธ์ธ๊ฐ€ ํ•ด์„œ pop์ด ์•„๋‹Œ ์ธ๋ฑ์Šค๋กœ ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ๋ฒ•์„

 ๊ตฌํ˜„ํ–ˆ์ง€๋งŒ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์‹œ๊ฐ„ ์ดˆ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•˜์˜€๋‹ค. ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ๋ฌธ์ œ ํ’€์ด๋ฅผ ์ฐพ์•„๋ณธ ๊ฒฐ๊ณผ stack์„ ์ด์šฉํ•˜๋ฉด

 ๋œ๋‹ค๋Š” ํžŒํŠธ๋ฅผ ์–ป์—ˆ๋‹ค.

  

   1) ์ฒซ ๋ฒˆ์งธ ๊ฐ’์„ list์— ์ถ”๊ฐ€

   2) ๋ฌธ์ž์—ด ๋๊นŒ์ง€ ๋ฐ˜๋ณต

       2-1) list ๊ธธ์ด๊ฐ€ 0์ด๋ฉด ๊ทธ๋ƒฅ ๋ฌธ์ž ์ถ”๊ฐ€

       2-2) list์— ์žˆ๋Š” ๊ฐ’๊ณผ list์— ๋„ฃ์„ ๊ฐ’์ด ๊ฐ™์œผ๋ฉด list ๊ฐ’ pop

       2-3) ๊ฐ™์€ ๊ฐ’์ด ์•„๋‹ˆ๋ฉด ๋ฌธ์ž ์ถ”๊ฐ€

   3) list ๊ธธ์ด๊ฐ€ 0์ด ์•„๋‹ˆ๋ฉด ์ง์ง€์–ด ์ œ๊ฑฐํ•˜๊ธฐ ์„ฑ๊ณต x ์ด๋ฏ€๋กœ answer=0


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