๋ฌธ์ ์ ๋ชฉ | ์ ๋ต๋ฅ | ๋์ด๋ |
๊ดํธ ๋ณํ | 47% | Lv.2 |
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
๋ฌธ์ ์์ฝ
๋ฌธ์์ด s๊ฐ ์ฃผ์ด์ง๋ค.
์กฐ๊ฑด 1) s๋ฅผ ๊ท ํ ์กํ u, ์ผ๋ฐ v๋ก ๋ถํ (๊ท ํ ์กํ== (, )์ ๊ฐ์๊ฐ ๋์ผ)
์กฐ๊ฑด 2) u๊ฐ ์ฌ๋ฐ๋ฅธ์ง ํ๋จ (์ฌ๋ฐ๋ฅธ= (์ด ์ง๊ฟ) ์์ ๋์์ผ ํจ)
์กฐ๊ฑด 3) ()์ ๊ฐ์๋ ๋์ผ, ๋ฌธ์์ด์ ํฌ๊ธฐ๋ 2~1000 ์ดํ
์ด๋ s๊ฐ ๋ฐ๋ฅธ ์์๋๋ก ๋ฐฐ์น๋๊ฒ ๋ณํํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์ฌ๋ผ(์์ธํ ๋ก์ง์ ๋ฌธ์ ์ ์กด์ฌ)
ํ์ด
Step1. ์ฌ๊ท ํ์ด ๊ตฌํ์ -> ์ด๊ธฐ ์กฐ๊ฑด ์ค์ ์๊ฐ
Step2. ๋ฌธ์ ์ ํ์ด ๋ฐ๋ผ๊ฐ๊ธฐ
- string ๊ธธ์ด 0์ด๋ฉด -> ' '
- string -> balance u, v๋ก ์ชผ๊ฐ๊ธฐ
- string u๊ฐ
- correct์ด๋ฉด -> u๊ฒฐ๊ณผ์ v๋ฅผ string์ผ๋ก ์๊ฐํ๊ณ ์ฌ๊ท์ ์ผ๋ก ์ฐ์ฐํด์ ๋ฐํ
- ๊ทธ๋ ์ง ์์ผ๋ฉด '('+ v๋ฅผ string์ผ๋ก ์๊ฐํ๊ณ ์ฌ๊ท์ ์ผ๋ก ์ฐ์ฐ+')'+u[1:-1]์ ๊ดํธ ๋ค์ง์ด์ ๋ฐํ
์ฝ๋
def split_balance(string): #balance๋ก split
sum=0
index=0
for idx, bracket in enumerate(string):
if bracket=='(':
sum-=1
else:
sum+=1
if sum==0:
break
return string[:idx+1], string[idx+1:]
def is_correct_str(string):
sum=0
for bracket in string:
if bracket=='(':
sum-=1
else:
sum+=1
if sum>0:
return False
return sum==0
def reverse_str(string):
answer=''
for bracket in string:
if bracket=='(':
answer+=')'
else:
answer+='('
return answer
def solution(p): #2์ด์ ์ง์
if len(p)==0:
return ''
idx=0
while idx<len(p):
u, v=split_balance(p)
if is_correct_str(u)==True:
return u+solution(v)
else:
return '('+solution(v)+')'+reverse_str(u[1:-1])
'์๊ณ ๋ฆฌ์ฆ๐ฅ > ๋ฌธ์ ํ์ด (Python)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Baekjoon]16234. ์ธ๊ตฌ์ด๋ (Gold_4) 2024/4/15 (0) | 2024.04.15 |
---|---|
[Baekjoon]18405. ๊ฒฝ์์ ์ ์ผ (Gold_5) 2024/4/9 (0) | 2024.04.09 |
[Programmers] ๋ฌธ์์ด ์์ถ (Lv.2) 2024/4/2 (0) | 2024.04.02 |
[Programmers] ๊ธฐ๋ฅ๊ณผ ๋ณด ์ค์น (Lv.3) 2024/4/1 (1) | 2024.04.01 |
[Programmers] ์๋ฌผ์ ์ ์ด์ (Lv.3) 2024/3/31 (0) | 2024.03.31 |