๊ธ€ ์ž‘์„ฑ์ž: ํƒ์‹œ ์šด์ „์‚ฌ
๋ฐ˜์‘ํ˜•

๐Ÿ‘ทโ€โ™€๏ธ ์‡ ๋ง‰๋Œ€๊ธฐ ๋ฌธ์ œ ํ’€์–ด๋ณด๊ธฐ


๐Ÿ˜ƒ ๋‚˜์˜ ์ฝ”๋“œ

def solution(arrangement):
    answer = 0
    arrangement = arrangement.replace("()","L")
    stack = []
    for idx, c in enumerate(arrangement):
        if c == '(': 
            stack.append('(')
            answer += 1
        elif c == ')':
            stack.pop()
        else:
            answer += len(stack)
    return answer

์Šคํƒ/ํ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์นดํ…Œ๊ณ ๋ฆฌ์— ์†ํ•œ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋Š” ์Šคํƒ์„ ์ด์šฉํ•ด ํ’€์–ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์šฐ์„  ๋ ˆ์ด์ €์— ํ•ด๋‹นํ•˜๋Š” ()๋ฅผ (๊ณผ )์ด ์•„๋‹Œ ๋‹ค๋ฅธ ๋ฌธ์ž ํ•˜๋‚˜๋กœ ๋ฐ”๊พธ์ค๋‹ˆ๋‹ค ์—ฌ๊ธฐ์„œ๋Š” Lazer์— ํ•ด๋‹นํ•˜๋Š” L๋กœ ๋ฐ”๊ฟ”์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค. stack๋ผ๋Š” list๋ฅผ ๋งŒ๋“ค์–ด ์™ผ์ชฝ๋ถ€ํ„ฐ enumerate๋ฅผ ์ด์šฉํ•˜์—ฌ ํƒ์ƒ‰ํ•ฉ๋‹ˆ๋‹ค.

	if c == '(': 
	    stack.append('(')
	    answer += 1
	elif c == ')':
	    stack.pop()
	else:
	    answer += len(stack)

์šฐ์„  ๋ฐ›์€ ๋ฌธ์ž๊ฐ€ (์ผ ๋•Œ์ž…๋‹ˆ๋‹ค. stack์— (๋ฅผ ์ถ”๊ฐ€ํ•ด์ฃผ๊ณ  ์‡ ๋ง‰๋Œ€๊ธฐ ์ˆ˜๋ฅผ ํ•˜๋‚˜ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ์€ )์ผ ๋•Œ์ž…๋‹ˆ๋‹ค. ๋ง‰์•ฝ stack์˜ ๋งˆ์ง€๋ง‰ ์š”์†Œ๊ฐ€ (์ด๋ผ๋ฉด stack์˜ ์Šคํƒ์„ popํ•ด์ค๋‹ˆ๋‹ค. ์ด๋Š” ๋ง‰๋Œ€๊ธฐ์˜ ๋์ด๋ผ๋Š” ๋œป์ž…๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ L์ด๋ผ๋ฉด ๋ ˆ์ด์ €์ด๊ธฐ ๋•Œ๋ฌธ์— stack์˜ ํฌ๊ธฐ ์ฆ‰, ํ˜„์žฌ ๋ ˆ์ด์ €๊ฐ€ ์ž๋ฅด๋Š” ์‡ ๋ง‰๋Œ€๊ธฐ์˜ ๊ฐฏ์ˆ˜๋งŒํผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

Written with StackEdit.


๋ฐ˜์‘ํ˜•