728x90
https://www.acmicpc.net/problem/1935
import sys
n = int(sys.stdin.readline())
string = sys.stdin.readline().rstrip()
number = []
for _ in range(n):
number.append(int(sys.stdin.readline()))
stack = []
for char in string:
if char.isalpha(): #1
stack.append(number[ord(char)-65])
else:
n2 = stack.pop() #2
n1 = stack.pop() #3
if char == '+':
stack.append(n1+n2)
elif char == '-':
stack.append(n1-n2)
elif char == '*':
stack.append(n1*n2)
elif char == '/':
stack.append(n1/n2) #4
print('%.2f' %stack[0]) #5
#1 : 입력받은 문자열의 요소 중 하나가 알파벳이라면 아스키코드로 바꾸고 65로 빼주면 일정 숫자가 나오게 되는데 그 숫자를 인덱스로 가지는 number의 요소를 stack에 삽입
아스키코드의 대문자는 65~90번까지
#2, 3 : 스택은 FILO이니까 먼저 꺼내준 변수를 n2 나중을 n1으로 초기화
#4 : 파이썬 나누기 연산자는 정수부분과 소수부분을 같이 반환해준다
#5 : c언어와 비슷한 부분인데 '%.2f' 는 소수점 2자리까지 원하는 숫자를 출력한다는 뜻 그래서 stack[0]을 소수점 2자리까지 출력
대문자를 지정된 숫자에 대응하는 발상이 신기했다.
728x90
'[Coding Test] > [백준]' 카테고리의 다른 글
[백준] 3986 파이썬(python) : 좋은 단어 (0) | 2022.07.21 |
---|---|
[백준] 1918 파이썬(python) : 후위 표기식 (0) | 2022.07.21 |
[백준] 2504 파이썬(python) : 괄호의 값 - (★) (0) | 2022.07.21 |
[백준] 1406 파이썬(python) : 에디터 - 이중stack (0) | 2022.07.20 |
[백준] 5052 파이썬(python) : 전화번호 목록 - (문자열숫자정렬, 리스트속문자열슬라이싱) (0) | 2022.07.20 |