[๋ฌธ์ ๋งํฌ] ๐
ํ๋ก๊ทธ๋๋จธ์ค
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 ์ฝ๋์ ์ฃผ์ ์ฐจ์ด์
- ๋ฆฌ์คํธ ์ฌ๊ตฌ์ฑ์ ์ ๋ฌด
- ๊ฐ์ ์ ์ฝ๋(solution(s)) : ๋ฌธ์์ด์ ํฉ์น๊ณ ๋ฆฌ์คํธ๋ก ๋ณํํ๋ ๊ณผ์ ์ ๋ฐ๋ณตํ์ฌ s = list(''.join(s))๋ก ๊ณ์ ์ ์ฒด ๋ฌธ์์ด์ ์กฐ์ํ๋ค.
- ๊ฐ์ ํ ์ฝ๋(์คํ ์ฌ์ฉ) : ์คํ์ ์ฌ์ฉํ์ฌ ํ ๋ฒ์ฉ๋ง ํ์ธํ๊ณ , ๋ถ์ด์๋ ๋ฌธ์๊ฐ ๋์ค๋ฉด pop์ผ๋ก ์ ๊ฑฐํ๋ฏ๋ก ์ ์ฒด ๋ฌธ์์ด์ ๋ฐ๋ณตํด ์ฌ๊ตฌ์ฑํ์ง ์๋๋ค.
- ์๊ฐ ๋ณต์ก๋
- ์คํ์ ์ด์ฉํ ์ฝ๋ : O(n)์ผ๋ก, ๋ฌธ์์ด์ ๋จ ํ ๋ฒ์ฉ๋ง ํ์ธํ๋ฉด์ ๋ถ์ด ์๋ ์์ ์ ๊ฑฐํด ๋๊ฐ๋ค.
- ๋ฆฌ์คํธ ์ฌ๊ตฌ์ฑ ๋ฐ๋ณต ์ฝ๋ : O(n²)์ผ๋ก, ๋ฌธ์์ด์ ์ฌ๊ตฌ์ฑํ๋ ๊ณผ์ ์ด ๋ฐ๋ณต๋ ๋๋ง๋ค ๋ ๋ง์ ์๊ฐ์ด ์์๋๋ค.
์คํ ๊ตฌ์กฐ๋ฅผ ์ด์ฉํ๋ ๋ฐฉ์์ด ๋ฌธ์์ด์ ์ฌ๊ตฌ์ฑํ๋ ๋ฐฉ์๋ณด๋ค ํจ์ฌ ๋น ๋ฅด๊ฒ ์๋ํ๋ฏ๋ก, ์คํ์ ์ฌ์ฉํ ์ฝ๋๊ฐ ํจ์ฌ ํจ์จ์ ์ด๋ค.
'๐งฉ Algorithm > [Programmers] Level 2' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [Programmers] L2. ์ ํ์ ์๊ฐ ์ด๋ (Python) (0) | 2024.11.11 |
|---|---|
| [Programmers] L2. ์นดํซ (์์ ํ์/Python) (0) | 2024.11.11 |
| [Programmers] L2. ํผ๋ณด๋์น ์ (Python) (0) | 2024.11.10 |
| [Programmers] L2. ์ด์ง ๋ณํ ๋ฐ๋ณตํ๊ธฐ (Python) (0) | 2024.11.09 |
| [Programmers] L2. JadenCase ๋ฌธ์์ด ๋ง๋ค๊ธฐ (Python) (0) | 2024.11.08 |