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 | 29 | 30 |
Tags
- k개 사과 트리 노드만으로 배를 최대로 수확하기
- paper
- 2085
- 소프트웨어마에스트로
- 25195
- 7626
- blobaww
- 1인개발
- Fitmong
- barin tumor
- 2494
- 개발
- 백준
- God of Mine
- AI
- 34031
- 소마
- Classification
- BOJ
- TaskQ
- 알고리즘
- TripGuard
- Australian Voting
- 25977
- 홀수 홀릭 호석
- 숫자 맞추기
- 24501
- 하이터치☆메모리
- MemoSprint
- 외국어이름
Archives
- Today
- Total
iwanabethedev 님의 블로그
[boj 34031] 하이터치☆메모리 본문
괄호 문자열과 관련된 문제.
A 괄호열에서 "(" 보다 ")" 가 많아지는 접두사는 사용할 수 없습니다.
B 괄호열에서 접두사가 ")"로 닫히지 않는 접두사도 사용할 수 없습니다.
B 괄호열에서 접두사가 ")"로 닫혀야 한다는게 말로 표현하려니까 애매한데, 문제를 직접 풀면서 고민해보신 분은 코드를 보면 금방 이해하실 것 같습니다.
더보기
import sys
input = sys.stdin.readline
def solve():
A = input().rstrip()
B = input().rstrip()
A_dict = {}
B_dict = {}
trans = {"(": 1, ")": -1}
cur = 0
for a in A:
cur += trans[a]
if cur < 0: break
A_dict[cur] = A_dict.get(cur, 0) + 1
cur = 0
tmp = 0
for b in B:
cur += trans[b]
if trans[b] > 0: tmp += 1
else: tmp = max(0, tmp-1)
if not tmp: B_dict[cur] = B_dict.get(cur, 0) + 1
ans = 0
for k, v in A_dict.items():
u = B_dict.get(-k, 0)
ans += u*v
print(ans)
return
def main():
solve()
return
if __name__ == "__main__":
main()

'알고리즘' 카테고리의 다른 글
| [20164] 홀수 홀릭 호석 (0) | 2026.03.26 |
|---|---|
| [boj 25977] k개 사과 트리 노드만으로 배를 최대로 수확하기 (0) | 2026.03.25 |
| [boj 4013] ATM (0) | 2026.03.23 |
| [boj 2085] 진법 (0) | 2026.03.22 |
| [boj 32406] 의좋은 형제 (0) | 2026.03.21 |
