์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
- ์ธ๋์ํ๋ง
- ๋น ๋ฐ์ดํฐ
- Lambda
- iloc
- numpy
- DBSCAN
- ๋ ๋ฆฝํ๋ณธ
- ์๋ํด๋ผ์ฐ๋
- ๋น ๋ฐ์ดํฐ๋ถ์๊ธฐ์ฌ
- ๋ฐ์ดํฐ๋ถ์
- ๋ฐ์ดํฐ๋ถ๊ท ํ
- ํ์ด์ฌ
- opencv
- Python
- pandas
- ํ ์คํธ๋ถ์
- ํฌ๋กค๋ง
- datascience
- ADsP
- ๋ฐ์ดํฐ๋ถ์์ ๋ฌธ๊ฐ
- dataframe
- ์ฃผ์ฑ๋ถ๋ถ์
- ๊ตฐ์งํ
- ๋์ํ๋ณธ
- LDA
- ๋ฐ์ดํฐ๋ถ์์ค์ ๋ฌธ๊ฐ
- PCA
- ADP
- t-test
- ์ค๋ฒ์ํ๋ง
Data Science LAB
[Python] ํ๋ก๊ทธ๋๋จธ์ค ์ฝ๋ฉํ ์คํธ ์ฐ์ต level2 (๊ดํธ ํ์ ํ๊ธฐ) ๋ณธ๋ฌธ
[Python] ํ๋ก๊ทธ๋๋จธ์ค ์ฝ๋ฉํ ์คํธ ์ฐ์ต level2 (๊ดํธ ํ์ ํ๊ธฐ)
ใ ใ ใ ใ 2022. 12. 27. 01:231. ๋ฌธ์ ์ค๋ช
๋ค์ ๊ท์น์ ์งํค๋ ๋ฌธ์์ด์ ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด์ด๋ผ๊ณ ์ ์ํฉ๋๋ค.
- (), [], {} ๋ ๋ชจ๋ ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด์ ๋๋ค.
- ๋ง์ฝ A๊ฐ ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด์ด๋ผ๋ฉด, (A), [A], {A} ๋ ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด์ ๋๋ค. ์๋ฅผ ๋ค์ด, [] ๊ฐ ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด์ด๋ฏ๋ก, ([]) ๋ ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด์ ๋๋ค.
- ๋ง์ฝ A, B๊ฐ ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด์ด๋ผ๋ฉด, AB ๋ ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด์ ๋๋ค. ์๋ฅผ ๋ค์ด, {} ์ ([]) ๊ฐ ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด์ด๋ฏ๋ก, {}([]) ๋ ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด์ ๋๋ค.
๋๊ดํธ, ์ค๊ดํธ, ๊ทธ๋ฆฌ๊ณ ์๊ดํธ๋ก ์ด๋ฃจ์ด์ง ๋ฌธ์์ด s๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง๋๋ค. ์ด s๋ฅผ ์ผ์ชฝ์ผ๋ก x (0 ≤ x < (s์ ๊ธธ์ด)) ์นธ๋งํผ ํ์ ์์ผฐ์ ๋ s๊ฐ ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด์ด ๋๊ฒ ํ๋ x์ ๊ฐ์๋ฅผ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
2. ์ ํ ์ฌํญ
- s์ ๊ธธ์ด๋ 1 ์ด์ 1,000 ์ดํ์ ๋๋ค.
3. ๋ด ํ์ด
from collections import deque
def solution(s):
answer = 0
s= deque(s)
s.rotate(1)
left = ['[', '(', '{']
right = [']',')', '}']
for i in range(len(s)):
s.rotate(-1)
stack = []
answer += 1
for x in s:
if x in left:
stack.append(x)
elif left[right.index(x)] not in stack:
answer -= 1
break
elif left[right.index(x)] == stack[-1]:
stack.pop()
else:
answer -=1
break
if stack != []:
answer -=1
return max(answer,0)
1. ๋ฌธ์์ด์ deque๋ก ์ ์ธ (rotate()ํจ์ ์ด์ฉํ๊ธฐ ์ํจ)
2. ์ผ์ชฝ์ ์์ด์ผํ๋ '(', '[', '{' ๋ฌธ์์ด์ ๋ด์ left ๋ฆฌ์คํธ๋ก ์์ฑ
3. ์ค๋ฅธ์ชฝ์ ์์ด์ผ ํ๋ ')', ']', '}' ๋ฌธ์์ด์ ๋ด์ right ๋ฆฌ์คํธ๋ก ์์ฑ
4. s์ ๋ฌธ์ ๊ฐ์ ๋งํผ ๋ฐ๋ณต -> ๋ฐ๋ณต๋ง๋ค rotate(-1), stack ์์ฑ, answer +1
5. ๊ฐ ๋ฐ๋ณต์ผ๋ก ์๋ก ์์ฑ๋ deque๋ฅผ x๋ก ๋ฐ๋ณต
6. ๋ง์ฝ x๊ฐ left ๋ฆฌ์คํธ์ ์กด์ฌํ๋ค๋ฉด stack์ ์ถ๊ฐ
7. x๊ฐ right ๋ฆฌ์คํธ์ ์์์ด์ง๋ง x์ ์ง๊ฟ์ด stack์ ์กด์ฌํ์ง ์์ผ๋ฉด answer -1 ํ ๋ค break
-> ex) '(]'
8. x์ ์ง๊ฟ์ด right ๋ฆฌ์คํธ์ ์์์ด๊ณ x์ ์ง๊ฟ์ด stack์ ๋ง์ง๋ง ์์๊ฐ ์๋๋ผ๋ฉด answer -1 ํ ๋ค break
-> ex) '([)'
9. x์ ์ง๊ฟ์ด right ๋ฆฌ์คํธ์ ์์์ด๊ณ x์ ์ง๊ฟ์ด stack์ ๋ง์ง๋ง ์์๋ผ๋ฉด stack ๋ง์ง๋ง ์์๋ฅผ popํ์ฌ ์ญ์
10. ๋ง์ง๋ง์ผ๋ก stack์ ์์๊ฐ ๋จ์์์ผ๋ฉด answer -1
-> ex) '{{{}' ๋ฐฉ์ง
4. ๋ค๋ฅธ ์ฌ๋ ํ์ด
def is_valid(s):
stack = []
for ch in s:
if not stack:
stack.append(ch)
elif stack[-1] == '(':
if ch==')': stack.pop()
else: stack.append(ch)
elif stack[-1] == '{':
if ch=='}': stack.pop()
else: stack.append(ch)
elif stack[-1] == '[':
if ch==']': stack.pop()
else: stack.append(ch)
return False if stack else True
def solution(s):
answer = 0
for i in range(len(s)):
answer += is_valid(s[i:]+s[:i])
return answer