๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ’ป DEV/ใ„ด problems

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] 2017 ํŒ์Šคํƒ€์šด: ์ง์ง€์–ด ์ œ๊ฑฐํ•˜๊ธฐ

by vodkassi 2021. 7. 7.
728x90

 

๋ฌธ์ œ ์„ค๋ช…

 

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

 

์˜ˆ๋ฅผ ๋“ค์–ด, ๋ฌธ์ž์—ด S = baabaa ๋ผ๋ฉด

b aa baa → bb aa → aa 

์˜ ์ˆœ์„œ๋กœ ๋ฌธ์ž์—ด์„ ๋ชจ๋‘ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ 1์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.


์ œํ•œ ์‚ฌํ•ญ

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


์ž…์ถœ๋ ฅ ์˜ˆ

s result
baabaa 1
cdcd 0

 

์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช…

 

์ž…์ถœ๋ ฅ ์˜ˆ #2 : ๋ฌธ์ž์—ด์ด ๋‚จ์•„์žˆ์ง€๋งŒ ์ง์ง€์–ด ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ž์—ด์ด ๋” ์ด์ƒ ์กด์žฌํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— 0์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

 

 

๋‚˜์˜ ์†”๋ฃจ์…˜ (์ ‘๊ทผ ๋ฐฉ๋ฒ•)

 

์ฒซ ๊ธ€์ž๋ถ€ํ„ฐ ์ˆœ์ฐจ์ ์œผ๋กœ ๋น„๊ตํ•ด์„œ ์ผ์น˜ํ•  ๊ฒฝ์šฐ index ์— ์ ‘๊ทผํ•ด ๊ธ€์ž๋ฅผ ์ œ๊ฑฐํ•˜๋ ค ํ–ˆ๋”๋‹ˆ ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ ํ•„์š” ์ด์ƒ์œผ๋กœ ์ปค์งˆ ๊ฒƒ ๊ฐ™์•˜๋‹ค. ๊ทธ๋ž˜์„œ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์ƒ๊ฐํ•ด๋ณด๋‹ค๊ฐ€ ๋ฌธ๋“ ์•ž ๊ธ€์ž ๋˜๋Š” ๋งˆ์ง€๋ง‰ ๊ธ€์ž๋ถ€ํ„ฐ stack ์— ๋‹ด์•„๋‘๊ณ  ์ƒˆ๋กœ ๊บผ๋‚ด๋Š” ๊ธ€์ž์™€ ๋น„๊ตํ•˜๋Š” ํ˜•ํƒœ๋กœ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋ผ ์ƒ๊ฐํ–ˆ๋‹ค. 

 

๊ทธ ๊ฒฐ๊ณผ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฝ”๋“œ๋ฅผ ์งค ์ˆ˜ ์žˆ์—ˆ๋‹ค.

def solution(s):

# ๋งˆ์ง€๋ง‰ ๊ธ€์ž๋ฅผ ๋นผ์„œ ๋‹ด์•„์ค„ stack
    stack = []
    case = list(s)
    while len(case) > 0:
        cur = case.pop()
        # ๋ฌธ์ž์—ด์˜ ๋งˆ์ง€๋ง‰ ๊ธ€์ž์™€ stack ์˜ top ์ด ๋‹ค๋ฅผ ๊ฒฝ์šฐ, stack ์— ๋‹ด์•„์ค€๋‹ค
        if len(stack) == 0 or stack[-1] != cur:
            stack.append(cur)
        # ์ผ์น˜ํ•  ๊ฒฝ์šฐ, ๋‘˜ ๋‹ค pop() ์œผ๋กœ ๋นผ ์ค€๋‹ค
        elif stack[-1] == cur:
            stack.pop()
            
    return int(bool(len(stack)==0))

 

 

 

 

๋Œ“๊ธ€