[๐Ÿค”Code Kata] 2week-2

์—ฌ์ฃผ๋งยท2020๋…„ 12์›” 13์ผ
0

CodeKata

๋ชฉ๋ก ๋ณด๊ธฐ
4/7
post-thumbnail

-DAY3-

<๋ฌธ์ œ>
s๋Š” ์—ฌ๋Ÿฌ ๊ด„ํ˜ธ๋“ค๋กœ ์ด๋ฃจ์–ด์ง„ String ์ธ์ž์ž…๋‹ˆ๋‹ค.
s๊ฐ€ ์œ ํšจํ•œ ํ‘œํ˜„์ธ์ง€ ์•„๋‹Œ์ง€ true/false๋กœ ๋ฐ˜ํ™˜ํ•ด์ฃผ์„ธ์š”.
์ข…๋ฅ˜๋Š” '(', ')', '[', ']', '{', '}' ์œผ๋กœ ์ด 6๊ฐœ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜์˜ ๊ฒฝ์šฐ ์œ ํšจํ•ฉ๋‹ˆ๋‹ค.
๊ด„ํ˜ธ ์ˆœ์„œ๊ฐ€ ๋งž์•„์•ผ ํ•œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • s = "()" -> return true
  • s = "()[]{}" -> return true
  • s = "(]" -> return false
  • s = "([)]" -> return false
  • s = "{[]}" -> return true

์ ‘๊ทผ๋ฐฉ๋ฒ•

์˜ค.. "{[()]}"ํ•ด๊ฒฐํ•˜๋ ค๋‹ˆ "(){}[]"๊ฑธ๋ฆฌ๊ณ ...

๋ฏฟ๊ณ  ๋งก๊ธฐ๋Š” ๋ฏผ์ฒ ๋‹˜๋„ ๊ฒฐ๊ตญ ์‹œ๊ฐ„์ด ์ข€ ๊ฑธ๋ฆฐ ๋ฌธ์ œ.. ๊ฒฐ๊ตญ ํ•ด๊ฒฐ์€ ๋ชปํ–ˆ๋‹ค ใ… ใ… ใ… 

์‹ค์ œ๋กœ ๋น„์Šทํ•œ ๋ฌธ์ œ๋“ค์„ ํ‘ธ์‹  ๋ธ”๋กœ๊ฑฐ ๋ถ„๋“ค์˜ ๋‹ต๋ณ€์„ ์ดํ•ดํ•˜๋Š”๊ฑฐ์—๋งŒ ๋งŒ์กฑํ•˜๋Š” ๊ฑธ๋กœ..ใ…œใ…œ ๋”ฐํํ‘...
rapsby.log๋ผ๋Š” ๋ธ”๋กœ๊ฑฐ๋ถ„์ด ํ‘ธ์‹  ๋‚ด์šฉ์ด ๋‚ด๊ฐ€ ์ƒ๊ฐํ–ˆ๋˜ ํ’€์ด๋ฒ•์ด๋ผ์„œ ์ธ์šฉํ•ด์„œ ๊ธฐ๋กํ–ˆ๋‹ค
1. stack, ๊ด„ํ˜ธ์ง dictionary๋ฅผ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค.
2. ๋ฌธ์ž์—ด์—์„œ ํƒ์ƒ‰ํ•˜๋ฉด์„œ ๋ฌธ์ž๊ฐ€ ์—ฌ๋Š” ๊ด„ํ˜ธ๋ฉด push
3. stack์ด ๋น„์–ด ์žˆ์ง€ ์•Š๊ณ , stack์˜ ๋งˆ์ง€๋ง‰ ์›์†Œ๊ฐ€ ๋ฌธ์ž์™€ ๊ฐ™์€ ๊ด„ํ˜ธ ์Œ์ด๋ฉด ์ง„ํ–‰ํ•œ๋‹ค.
4. ๋ฐ˜๋ณต๋ฌธ์ด ๋๋‚˜๊ณ  stack์ด ๋น„์–ด ์žˆ์œผ๋ฉด True๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

def solution(s):
    d = {
        ')' : '(',
        '}' : '{',
        ']' : '['
    }
    stack = []
    for c in s:
        if c in '({[':
            stack.append(c)
        elif c in ')}]':
            if stack:
                top = stack.pop()
                if d[c] != top:
                    return False
            else:
                return True
    return len(stack) == 0

stack๋ผ๋Š” ์ƒˆ๋กœ์šด ๊ฐœ๋…์ด ๋“ฑ์žฅํ–ˆ๋‹ค!!
๋‚ด์šฉ์€ ์•„์ง ์ •ํ™•ํ•˜๊ฒŒ ์ดํ•ดํ•˜์ง€ ๋ชปํ–ˆ์ง€๋งŒ, ๊ฐœ๋…์ด๋ผ๋„ ํ™•์‹คํžˆ ์ •๋ฆฌํ•ด๋‘์ž~

Stack

stack์ด๋ž€ ๋ฐ์ดํ„ฐ ์‚ฝ์ž…๊ณผ ์‚ญ์ œ๊ฐ€ ์ €์žฅ์†Œ์˜ ๋งจ ์œ—๋ถ€๋ถ„์—์„œ๋งŒ ์ผ์–ด๋‚˜๋Š” ๋‚˜์—ด๊ตฌ์กฐ์ด๋‹ค. ์ด๋Ÿฌํ•œ ๋‚˜์—ด๊ตฌ์กฐ LIFO (Last Input First Out)๋ผ๊ณ  ํ•œ๋‹ค.

Stack์€ ๋ฌธ์ž์—ด์„ ์—ญ์ˆœ์œผ๋กœ ์ถœ๋ ฅํ•˜๊ฑฐ๋‚˜ ์—ฐ์‚ฐ์ž ํ›„์œ„ํ‘œ์œ„๋ฒ•(์—ฐ์‚ฐ์ž๋ฅผ ํ”ผ์—ฐ์‚ฐ์ž๋’ค์— ํ‘œ๊ธฐํ•˜๋Š”๋ฐฉ๋ฒ• AB+์ด๋Ÿฐ์‹)๋“ฑ์— ์‚ฌ์šฉ๋œ๋‹ค.

<Stack ๊ตฌํ˜„>

  • ํ•„์ˆ˜์‚ฌํ•ญ init
    Python์—์„œ๋Š” ๋ฆฌ์ŠคํŠธ๋กœ ์Šคํƒ์„ ๋ถˆ๋Ÿฌ์˜จ๋‹ค. ์Šคํƒ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์ดˆ๊ธฐํ™” ํ• ๋•Œ๋Š” ๋นˆ๋ฆฌ์ŠคํŠธ๋ฅผ ๋งŒ๋“ค์–ด์ค€๋‹ค.
stack = []
  • push
    Stack์— ์›์†Œ๋ฅผ ๋„ฃ์„ ๋•Œ์—๋Š” append ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•ด ๋งจ ์œ„์— ๊ฐ’์„ ์ถ”๊ฐ€ํ•œ๋‹ค.
stack = [1,2,3]
stack.push(4)

#stack = [1,2,3,4]
  • pop
    Stack์—์„œ ์›์†Œ๋ฅผ ์ œ๊ฑฐํ• ๋•Œ๋Š” pop๋ฉ”์†Œ๋“œ๋ฅผ ์ด์šฉํ•ด ๋ฆฌ์ŠคํŠธ์˜ ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰ ์›์†Œ๋ฅผ ์ œ๊ฑฐํ•ด์ค€๋‹ค.
stack = [1,2,3]
top = stack.pop()

print(top)
#stack = [1,2]
  • top
    Stack์—์„œ ์›์†Œ๋ฅผ ์ œ๊ฑฐํ•˜์ง€ ์•Š๊ณ  ๊ฐ€์ ธ์˜ค๊ธฐ๋งŒ ํ•  ๋•Œ์—๋Š” [-1]์„ ์ด์šฉํ•˜๋„๋ก ํ•œ๋‹ค.
stack = [1,2,3]
top = stack[-1]

# top = 3

์–ด๋ ค์šด ๋ฌธ์ œ๋ผ ์•„์ง๋„ ์ดํ•ด๊ฐ€ ์•ˆ๋˜๋Š”๋ฐ ๊ทธ๋ž˜๋„ ์–ด๋Š์ •๋„ ํ๋ฆ„์„ ํŒŒ์•…ํ–ˆ๋‹ค. ์ข€๋” ํŒŒ์ด์ฌ์— ์ต์ˆ™ํ•ด์ง€๋Š”๋‚ .. ์˜ฌ๊นŒ..?๐Ÿ˜ž

profile
๐ŸŒฑBackend Developer๐Ÿ‘ฉโ€๐Ÿ’ป

0๊ฐœ์˜ ๋Œ“๊ธ€