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
- safari world
- Counting The number
- kotlin
- BitMasking
- 디버그심볼
- 기본메신저
- 파이썬
- 10430
- dp
- Android
- baekjoon
- debugSymbolLevel
- 18108
- Class Delegation
- 백준3085
- 2525
- 코틀린
- 백준1476
- 꼬마 정민
- 1330
- 10807
- 개수 세기
- 10926
- 백준1107
- 새싹
- 백준
- 브루트포스
- 사파리 월드
- 25083
- PreferenceManager
Archives
- Today
- Total
세상을 더 좋게
[백준] 1935 '후위 표기식 2' 파이썬(python) 본문
https://www.acmicpc.net/problem/1935
1935번: 후위 표기식2
첫째 줄에 피연산자의 개수(1 ≤ N ≤ 26) 가 주어진다. 그리고 둘째 줄에는 후위 표기식이 주어진다. (여기서 피연산자는 A~Z의 영대문자이며, A부터 순서대로 N개의 영대문자만이 사용되며, 길이
www.acmicpc.net
N = int(input()) # 피연산자의 개수
sen = input() # 후위 표기식
alpha = [0] * N # 피연산자 값들을 받을 리스트
for i in range(N) :
alpha[i] = int(input()) # 피연산자 값들 받기
stack = [] # 스택
for i in sen :
if 'A' <= i <= 'Z' : # 피연산자 만나면
stack.append(alpha[ord(i) - ord('A')]) # i가 알파벳이기에 숫자로 전환하여 스택에 저장
else : # 연산자 만나면
str2 = stack.pop()
str1 = stack.pop() # 연산자 중 '-'나 '/'는 순서가 중요하기에 이렇게 구분
if i == '+' :
stack.append(str1 + str2)
elif i == '-' :
stack.append(str1 - str2)
elif i == '*' :
stack.append(str1 * str2)
elif i == '/' :
stack.append(str1 / str2)
print('%.2f' %stack[0]) # 소수점 둘째자리까지 입력
Point
- 피연산자를 만나면 Push, 연산자를 만나면 Pop을 이용하는 Stack을 활용
- '-'나 '/' 조심
- 아스키 코드를 이용해 문자를 숫자로 전환하여 인덱스 활용
- 소수점 둘째자리까지 출력하는 .2f를 사용