Notice
Recent Posts
Recent Comments
Link
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- JS
- Python
- ํ์ด์ฌ
- ์๊ณ ๋ฆฌ์ฆ
- CSS
- ํฌ๋กค๋ง
- ์ฝ๋ฉํ ์คํธ
- ํ ์ดํ๋ก์ ํธ
- ๋ ธ๋ง๋์ฝ๋
- node.js
- heapq
- ํ๋ก ํธ์๋
- ๊ทธ๋ฆฌ๋
- ๋ชจ๊ฐ์ฝ
- ๋๋ฆผ์ฝ๋ฉ
- Til
- ๋ฐฑ์ค
- ๊ตญ๋น์ง์
- ์ฝ๋ฉ
- ํ๋ก์ ํธ
- KDT
- react
- ๊ฐ๋ฐ
- ํ๋ก๊ทธ๋๋จธ์ค
- error
- javascript
- mongodb
- HTML
- fe
- ์ฝ๋ฉ์ ํ
Archives
- Today
- Total
๐ฑ → ๐ณ
[๋ฐฑ์ค] 9012๋ฒ: ๊ดํธ python ๋ณธ๋ฌธ
728x90
https://www.acmicpc.net/problem/9012
9012๋ฒ: ๊ดํธ
๊ดํธ ๋ฌธ์์ด(Parenthesis String, PS)์ ๋ ๊ฐ์ ๊ดํธ ๊ธฐํธ์ธ ‘(’ ์ ‘)’ ๋ง์ผ๋ก ๊ตฌ์ฑ๋์ด ์๋ ๋ฌธ์์ด์ด๋ค. ๊ทธ ์ค์์ ๊ดํธ์ ๋ชจ์์ด ๋ฐ๋ฅด๊ฒ ๊ตฌ์ฑ๋ ๋ฌธ์์ด์ ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด(Valid PS, VPS)์ด๋ผ๊ณ
www.acmicpc.net
์ค๊ณ ๋ฐฉ๋ฒ
๋์ ๋ฐฉ๋ฒ
- ps๊ฐ ์ฃผ์ด์ก์ ๋ “(”๋ฉด stack์ ๋ฃ๊ณ “)”๋ฉด stack์์ ๋นผ์ฃผ์์
- “)”์ธ๋ฐ stack์์ ๋บ ๊ฒ ์์ผ๋ฉด vps๊ฐ ์๋๊ฑฐ๊ณ , ps๋ฅผ ๋ชจ๋ ๋๊ณ ๋์๋ (๊ฐ ๋จ์์์ด๋ vps๊ฐ ์๋
๋ค๋ฅธ ๋ฐฉ๋ฒ
- ๊ผญ stack์ ์ด์ฉํ์ง ์๋๋ผ๋ sum = 0 ์ด๋ผ๊ณ ์ ์ธ ํ์ฌ ๊ตฌํํ ์ ์์
- “(”๋ฉด sum +=1, “)” ์ด๋ฉด sum -=1 ์ด๋ฐ ์์ผ๋ก
์ฝ๋
# ๋ด ์ฝ๋
# ์คํ ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ด์ฉํ ํ์ด
N = int(input())
for _ in range(N):
ps = list(input())
stack = []
ans = ''
for i in ps:
if i == "(":
stack.append(i)
elif i == ")":
if len(stack) == 0:
# print("NO")
ans = 'no'
break
else:
stack.pop()
if len(stack) == 0 and ans != 'no':
print('YES')
else:
print('NO')
# sum์ ์ด์ฉํ ํ์ด
a = int(input())
for i in range(a):
b = input()
s = list(b)
sum = 0
for i in s:
if i == '(':
sum += 1
elif i == ')':
sum -= 1
if sum < 0:
print('NO')
break
if sum > 0:
print('NO')
elif sum == 0:
print('YES')
์๊ฐ ๋ณต์ก๋
$O(n^2)$
์ด๋ ค์ ๋ ์
- “)”์ธ๋ฐ stack์์ ๋บ ๊ฒ ์์ผ๋ฉด break๋ฅผ ํ๊ณ stack์ ๊ธธ์ด๋ก ‘ps๋ฅผ ๋ชจ๋ ๋๊ณ ๋์๋ (๊ฐ ๋จ์์์ด๋ vps๊ฐ ์๋’ ์ ๊ฒฝ์ฐ๋ฅผ ์์ฑํ๋ ค๊ณ ํ๋ print๊ฐ 2๋ฒ ์ถ๋ ฅ๋๋ ํ์์ด ๋ํ๋ฌ๋ค
- ์ผ๋จ ๋๋ ans๋ผ๋ ๋ณ์๋ฅผ ๋ง๋ค์ด์ ans๊ฐ ๋น ๋ฐฐ์ด์ธ ๊ฒฝ์ฐ์๋ง ์๋์ if๋ฌธ์ด ์คํ๋๋๋ก ํ์๋๋ฐ ์๋์ ์์๋ฅผ ๋ณด๋ for j ์ ๊ฐ์ ๋ผ์ธ์ else๋ฅผ ํ๋ break๋ฌธ์ผ๋ก ๋์ด์ง์ง ์๊ณ ์ํ๋์์ ๊ฒฝ์ฐ ์ํํ๋๋ก ํ ์ ์์ ๊ฒ์ ํ์ธ ํ ์ ์์๋ค
- break์ ๋ํด ์ข ๋ ์์๋ด์ผ ํ ๊ฒ ๊ฐ๋ค
T = int(input())
for i in range(T):
stack = []
a=input()
for j in a:
if j == '(':
stack.append(j)
elif j == ')':
if stack:
stack.pop()
else: # ์คํ์ ๊ดํธ๊ฐ ์์๊ฒฝ์ฐ NO
print("NO")
break
else: # break๋ฌธ์ผ๋ก ๋๊ธฐ์ง ์๊ณ ์ํ๋ฌ์๊ฒฝ์ฐ ์ํํ๋ค
if not stack: # break๋ฌธ์ผ๋ก ์๋๊ธฐ๊ณ ์คํ์ด ๋น์ด์๋ค๋ฉด ๊ดํธ๊ฐ ๋ค ๋ง๋๊ฑฐ๋ค.
print("YES")
else: # break์ ๊ฑธ๋ ธ๋๋ผ๋ ์คํ์ ๊ดํธ๊ฐ ๋ค์ด์๋ค๋ฉด NO์ด๋ค.
print("NO")
์ฐธ๊ณ ์๋ฃ
728x90
'Algorithms' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 1406๋ฒ: ์๋ํฐ python (0) | 2023.01.05 |
---|---|
[๋ฐฑ์ค] 1874๋ฒ: ์คํ ์์ด python (0) | 2023.01.04 |
[๋ฐฑ์ค] 9093๋ฒ: ๋จ์ด ๋ค์ง๊ธฐ python (0) | 2023.01.02 |
[๋ฐฑ์ค] 10828๋ฒ: ์คํ - python (0) | 2023.01.01 |
[๋ฐฑ์ค] 11729๋ฒ: ํ๋ ธ์ด์ ํ ์ด๋ ์์ - python (0) | 2022.12.30 |