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 | 31 |
Tags
- 코틀린인액션
- Kotlin In Action
- 스프링 핵심 원리 - 기본편
- 객체 지향 설계와 스프링
- 컨베이어 벨트 위의 로봇 Python
- 고급매핑
- Kotlin in action 10장
- 스프링 핵심 원리
- 20055 컨베이어 벨트 위의 로봇
- 코틀린
- 13460 구슬탈출 2
- 20055
- spring
- Kotlin
- 백준
- Kotlin in action 3장
- Python
- kotlin in action 정리
- 스프링 컨테이너와 스프링 빈
- 스프링 핵심 원리 이해
- 기능개발 python
- 코틸린인액션
- Kotlin in action 6장
- 백준 13460 Python
- Kotlin in action 5장
- KotlinInAction
- 자바 ORM 표준 JPA 프로그래밍 7장
- 싱글톤 컨테이너
- 백준 20055 컨베이어 벨트 위의 로봇
- 7장 고급매핑
Archives
- Today
- Total
기록하는 습관
[백준] 2504 괄호의 값 본문
문제
코드
string = input()
stack = []
answer = 0
for s in string:
if s == "(" or s == "[":
stack.append(s)
elif s == ")":
sum = 0
while stack:
top = stack.pop()
if top == "[" or top == "]": # 올바르지 못한 괄호
print(0)
exit(0)
elif top == "(":
if sum == 0: # () 일 경우
stack.append(2)
else: # (X) 일 경우
stack.append(2 * sum)
break # ( 괄호 만났으면 다음 괄호문자열 받기
else: # ( 만날 때까지 숫자 더하기
sum += top
elif s == "]":
sum = 0
while stack:
top = stack.pop()
if top == "(" or top == ")": # 올바르지 못한 괄호
print(0)
exit(0)
elif top == "[":
if sum == 0: # [] 일 경우
stack.append(3)
else: # [X] 일 경우
stack.append(3 * sum)
break # [ 괄호 만났으면 다음 괄호문자열 받기
else: # [ 만날 때까지 숫자 더하기
sum += top
for num in stack:
if type(num) != int:
print(0)
exit(0)
else:
answer += num
print(answer)
풀이
- 아이디어
예시 괄호: ( [ ] )
- 우선, 괄호가 바로 짝이 맞는 경우부터 생각하기
- stack에 "[" 가 들어있고, string이 "]" 라면 바로 괄호 짝이 맞는다.
- 괄호 짝을 맞추면 괄호에 해당하는 숫자(1번의 경우 '3')로 변환해 다시 스택에 넣는다.
- (X) 경우로 확장시키기
- 이 경우 1번 과정을 거쳤다면 실제 stack에는 "(3" 가 들어있게 된다.
- string이 ")" 라면 stack.pop() 을 진행하면서 "(" 가 나올 때까지 숫자를 더한다.
- 방법
- "(", "[" 가 들어오면 stack에 넣는다.
- ")" 괄호가 들어오면 "(" 괄호를 만날 때까지 stack.pop() 을 하며 sum 변수에 더한다.
- "(" 괄호를 만났다면 stack에 숫자로 변환해 다시 스택에 넣는다.
- sum 변수가 0 이라면 "()" 와 같이 빈 괄호인 경우이므로 2만 넣는다.
- sum 변수가 0이 아니라면 "(sum값)" 이므로 2 * sum 계산을 해서 넣는다.
'알고리즘 > [문제풀이] 백준' 카테고리의 다른 글
[백준] 14425 문자열 집합 (0) | 2021.05.23 |
---|---|
[백준] 11279 최대 힙 (0) | 2021.05.23 |
[백준] 2346 풍선 터뜨리기 (0) | 2021.05.11 |
[삼성sw역량테스트 - 기출] 구슬 탈출2 (0) | 2020.10.11 |
[백준] DP - 동전1 (0) | 2020.10.04 |
Comments