[문제 링크] 👇
풀이
💡 스택 이용
스택과 후위표기식을 담을 리스트 생성
stack = []
postfix = []
- 파이썬엔 스택 함수가 따로 없기 때문에 리스트를 스택처럼 사용하면 된다.
- 리스트 내장함수에는 pop(), append(), insert() 등이 있다.
입력 받은 중위 표기식 리스트에서 하나씩 꺼낸다.
- "+" 이면 stack에 추가한다.
- 숫자이면 postfix 에 담는다.
- 숫자일 때, stack이 비어있지 않다면 stack에서 첫 번째 요소를 빼고 postfix 에 추가한다.
후위 표기식을 다 끝냈다면, postfix 에서 하나씩 꺼낸다.
- 후위 표기식에서 숫자인 것만 int 형으로 변환하고 결과에 누적하면서 더한다.
Solution
for test_case in range(1, 11):
_ = int(input())
infix = input().strip() # 중위 표기식
stack = [] # 스택
postfix = [] # 후위 표기식
result = 0 # 연산 결과를 담을 변수
for i in infix:
if i == "+":
stack.append(i)
else:
postfix.append(i)
if len(stack) > 0:
postfix.append(stack.pop(0))
for i in postfix: # 연산 결과
if i != "+":
result += int(i)
print(f"#{test_case} {result}")
👩💻 회고
이 문제가 왜 D4 에 있는지..? 후위 표기식의 결과를 출력하라고 했다면 더 좋았을 텐데, 이건 단순히 연산 결과만 출력하는 것이기 때문에 굳이 후위 표기식으로 처리할 필요가 없다. 아쉬운 문제다.
그래도 이번 기회로 전, 후위로 변환하는 과정을 코딩할 수 있었다는 점이 괜찮았다.
'SWEA' 카테고리의 다른 글
[SWEA] 19185. 육십갑자 (Python/D3) (0) | 2024.11.03 |
---|---|
[SWEA] 10912. 외로운 문자 (Python/D3) (0) | 2024.11.01 |
[SWEA] 13547. 팔씨름 (Python/D3) (0) | 2024.10.30 |
[SWEA] 1229. [S/W 문제해결 기본] 8일차 - 암호문2 (Python/D3) (0) | 2024.10.30 |
[SWEA] 1228. [S/W 문제해결 기본] 8일차 - 암호문1 (Python/D3) (0) | 2024.10.30 |