728x90
반응형
🍀 문제유형: 스택
🍀 문제설명(링크 참조)
https://www.acmicpc.net/problem/1935
🍀 풀이코드
n = int(input())
cmds = input()
nums = []
for _ in range(n):
nums.append(int(input()))
#pt = 0
stk = []
for cmd in cmds:
if cmd.isalpha():
stk.append(nums[ord(cmd)-ord('A')])
#stk.append(nums[pt])
#pt += 1
else:
a = stk.pop()
b = stk.pop()
#print(f"about a{a}, b{b}")
if cmd == "+":
stk.append(a+b)
elif cmd == "*":
stk.append(a*b)
elif cmd == "/":
stk.append(b/a)
elif cmd == "-":
stk.append(b-a)
#print(stk)
print(f"{stk[0]:.2f}")
🍀 배운 점
- 런타임 에러가 발생하는 이유가, pt를 사용해서라는 점을 알게됨. alpha가 나올 때마다 1씩 증가해 접근하면 시간복잡도가 똑같을 거라고 생각했는데, 아니었나보다..
- ord() 함수는 문자의 ASCII 코드를 리턴하는데, " 피연산자는 A~Z의 영대문자이며, A부터 순서대로 N개의 영대문자만이 사용되며, 길이는 100을 넘지 않는다 " 이 조건을 생각하면 ord(cmd) - ord('A')로 쉽게 인덱스를 찾아갈 수 있군. 싶었다.
- 아 참, 그리고 소수점 표기 출력은 :.#f 임 !!
728x90
반응형
'코딩테스트 > BAEKJOON' 카테고리의 다른 글
[백준/Python] 3040. 백설 공주와 일곱 난쟁이 (0) | 2024.10.26 |
---|---|
[백준/Python] 2075. N번째 큰 수 (0) | 2024.10.25 |
[백준/Python] DFS/BFS-5014번. 스타트링크 (1) | 2024.10.12 |
[백준/Python] DFS/BFS-1697번. 숨바꼭질 (3) | 2024.10.12 |
[백준/Python] DFS/BFS-2644번. 촌수 문제 (1) | 2024.10.11 |