일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- cs50
- 4기
- 2021 Dev-matching 웹 백엔드 개발자
- 부스트캠프
- Naver boostcamp
- QNA 봇
- 풀스택
- 백준
- 장고
- 서버
- Customer service 구현
- AI Tech
- 서블릿
- Naver boostcourse
- 백엔드
- 웹 프로그래밍
- sts
- AI Tech 4기
- P Stage
- 대회
- BOJ
- 프로그래밍
- boostcourse
- 웹
- 프로그래머스
- 네이버
- 레벨2
- Django
- 구현
- 파이썬
Archives
- Today
- Total
daniel7481의 개발일지
[BOJ]1935 후위표기식2 본문
반응형
https://www.acmicpc.net/problem/1935
후위표기식을 풀었으니 후위 표기식2도 풀어보았다. 확실히 먼저 후위 표기식을 풀고 푸니까 훨씬 쉬웠다. 역으로 생각해서 이번에는 숫자들을 스택에 저장해준 후 연산자를 만나면 스택에서 두 번 pop해서 연산을 해주면 됬다. 근데 제출했더니 틀렸다고 나왔다.....놀란 마음에 뭐가 문제인지 생각을 해봤지만 아무리 봐도 틀린 것이 없었다. 결국에는 찾고 찾다가 소수점 2자리를 나타낼 때 나는 round를 썼고, 다른 사람들은 format함수를 썼다는 차이 밖에 없었다. 차이점은 출력할때 만약 6.00이면 round함수는 6을 출력하고, format함수는 6.00을 출력한다. 문제에서 예시 출력에 6.00이니, 할 말은 없기는 하다. 어쨌든 format함수를 써서 제출했더니 맞다고 나왔다.
import sys
input = lambda: sys.stdin.readline().rstrip()
n = int(input())
num_stack = []
expression = input()
dic = {}
for i in range(65, 65+n):
dic[chr(i)] = int(input())
for e in expression:
if e.isalpha():
num_stack.append(dic[e])
else:
x = num_stack.pop()
y = num_stack.pop()
exp = str(y)+e+str(x)
num_stack.append(eval(exp))
print("{:.2f}".format(num_stack.pop()))
반응형
'BOJ' 카테고리의 다른 글
[프로그래머스]2020 KAKAO BLIND RECRUITMENT - 문자열 압축 (0) | 2022.07.11 |
---|---|
[BOJ] 2174 로봇 시뮬레이션 (0) | 2022.07.08 |
[BOJ]1918 후위 표기식 (0) | 2022.07.08 |
[BOJ]8972 미친 아두이노 (0) | 2022.07.08 |
[BOJ]16967 배열 복원하기 (0) | 2022.07.06 |