๐Ÿงฉ Algorithm/[Programmers] Level 2

[Programmers] L2. ์ง์ง€์–ด ์ œ๊ฑฐํ•˜๊ธฐ (Python)

devCloud 2024. 11. 11. 15:45
728x90

[๋ฌธ์ œ ๋งํฌ] ๐Ÿ‘‡

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

SW๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ํ‰๊ฐ€, ๊ต์œก, ์ฑ„์šฉ๊นŒ์ง€ Total Solution์„ ์ œ๊ณตํ•˜๋Š” ๊ฐœ๋ฐœ์ž ์„ฑ์žฅ์„ ์œ„ํ•œ ๋ฒ ์ด์Šค์บ ํ”„

programmers.co.kr


ํ’€์ด ๋ฐฉ๋ฒ•

๐Ÿ’ก ์Šคํƒ ์ด์šฉ

 

์Šคํƒ์ด ๋น„์–ด์žˆ์œผ๋ฉด ์Šคํƒ์— ๊ฐ’์„ ๋„ฃ๋Š”๋‹ค.

์Šคํƒ์˜ ๋งจ ๋งˆ์ง€๋ง‰ ์š”์†Œ๊ฐ€ ํ˜„์žฌ ๋ฌธ์ž์™€ ๊ฐ™์œผ๋ฉด ๊บผ๋‚ธ๋‹ค.

์œ„ ์กฐ๊ฑด์ด ๋‹ค ๋งž์ง€ ์•Š์œผ๋ฉด ์Šคํƒ์— ํ˜„์žฌ ๋ฌธ์ž๋ฅผ ๋„ฃ๋Š”๋‹ค. 

 

Solution

def solution(s):
    stack = []
    for i in s:
        if not stack:  # ์Šคํƒ์ด ๋น„์–ด์žˆ์œผ๋ฉด
            stack.append(i)
            continue

        if stack[-1] == i:  # ์Šคํƒ ๋งจ ๋’ค ์š”์†Œ์™€ ๊ฐ™์œผ๋ฉด
            stack.pop()
            continue
            
        stack.append(i)  # ์œ„ ์กฐ๊ฑด์ด ๋ชจ๋‘ ๋งž์ง€ ์•Š์œผ๋ฉด
    return 0 if stack else 1

 


๐Ÿ‘ฉ‍๐Ÿ’ป ํšŒ๊ณ 

์‹œ๊ฐ„ ์ดˆ๊ณผ ๋‚œ ์ฝ”๋“œ

def solution(s):
    s = list(s)
    i = 1
    while True:
        if s[i - 1] == s[i]:
            s[i - 1], s[i] = '', ''
            i = 0  # ์ดˆ๊ธฐํ™”
            s = list(''.join(s))
        if i >= len(s) - 1:
            break
        i += 1

    return 1 if len(s) == 0 else 0

 

์‹œ๊ฐ„ ์ดˆ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•œ ์ด์œ 

s = list(''.join(s)) ๊ตฌ๋ฌธ์—์„œ ๋ฌธ์ž์—ด ์žฌ๊ตฌ์„ฑ์„ ๋ฐ˜๋ณต์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ด ๊ณผ์ •์€ ๋งค๋ฒˆ ์ „์ฒด ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ฌธ์ž์—ด๋กœ ํ•ฉ์นœ ํ›„ ๋‹ค์‹œ ๋ฆฌ์ŠคํŠธ๋กœ ๋ณ€ํ™˜ํ•˜๋ฏ€๋กœ, O(n) ๋ณต์žก๋„๊ฐ€ ๋ฐ˜๋ณต๋˜์–ด ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ O(n²) ์ˆ˜์ค€์œผ๋กœ ์ฆ๊ฐ€ํ•˜๊ฒŒ ๋œ๋‹ค.

 

 

solution ์ฝ”๋“œ์™€ ์ฃผ์š” ์ฐจ์ด์ 

  1. ๋ฆฌ์ŠคํŠธ ์žฌ๊ตฌ์„ฑ์˜ ์œ ๋ฌด
    • ๊ฐœ์„  ์ „ ์ฝ”๋“œ(solution(s)) : ๋ฌธ์ž์—ด์„ ํ•ฉ์น˜๊ณ  ๋ฆฌ์ŠคํŠธ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•˜์—ฌ s = list(''.join(s))๋กœ ๊ณ„์† ์ „์ฒด ๋ฌธ์ž์—ด์„ ์กฐ์ž‘ํ•œ๋‹ค.
    • ๊ฐœ์„  ํ›„ ์ฝ”๋“œ(์Šคํƒ ์‚ฌ์šฉ) : ์Šคํƒ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•œ ๋ฒˆ์”ฉ๋งŒ ํ™•์ธํ•˜๊ณ , ๋ถ™์–ด์žˆ๋Š” ๋ฌธ์ž๊ฐ€ ๋‚˜์˜ค๋ฉด pop์œผ๋กœ ์ œ๊ฑฐํ•˜๋ฏ€๋กœ ์ „์ฒด ๋ฌธ์ž์—ด์„ ๋ฐ˜๋ณตํ•ด ์žฌ๊ตฌ์„ฑํ•˜์ง€ ์•Š๋Š”๋‹ค.
  2. ์‹œ๊ฐ„ ๋ณต์žก๋„
    • ์Šคํƒ์„ ์ด์šฉํ•œ ์ฝ”๋“œ : O(n)์œผ๋กœ, ๋ฌธ์ž์—ด์„ ๋‹จ ํ•œ ๋ฒˆ์”ฉ๋งŒ ํ™•์ธํ•˜๋ฉด์„œ ๋ถ™์–ด ์žˆ๋Š” ์Œ์„ ์ œ๊ฑฐํ•ด ๋‚˜๊ฐ„๋‹ค.
    • ๋ฆฌ์ŠคํŠธ ์žฌ๊ตฌ์„ฑ ๋ฐ˜๋ณต ์ฝ”๋“œ : O(n²)์œผ๋กœ, ๋ฌธ์ž์—ด์„ ์žฌ๊ตฌ์„ฑํ•˜๋Š” ๊ณผ์ •์ด ๋ฐ˜๋ณต๋  ๋•Œ๋งˆ๋‹ค ๋” ๋งŽ์€ ์‹œ๊ฐ„์ด ์†Œ์š”๋œ๋‹ค.

์Šคํƒ ๊ตฌ์กฐ๋ฅผ ์ด์šฉํ•˜๋Š” ๋ฐฉ์‹์ด ๋ฌธ์ž์—ด์„ ์žฌ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ์‹๋ณด๋‹ค ํ›จ์”ฌ ๋น ๋ฅด๊ฒŒ ์ž‘๋™ํ•˜๋ฏ€๋กœ, ์Šคํƒ์„ ์‚ฌ์šฉํ•œ ์ฝ”๋“œ๊ฐ€ ํ›จ์”ฌ ํšจ์œจ์ ์ด๋‹ค.


 

728x90