반응형
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV14mbSaAEwCFAYD
계산기1 문제
Stack을 이용하여 중위 계산법의 숫자를 후위 계산법으로 바꾼 후, 계산하는 문제
100% 내 생각으로 풀었는가?
→ O
후위 계산법 성질에 대해 조금만 생각해보면 풀 수 있는 문제
내가 푼 정답 코드
for case in range(1,11):
N = int(input())
x = list(input())
stack = []
result = ''
for i in x:
if i == '+': # +를 만나면
while stack : #stack이 빌때 까지
result += stack.pop() # result에 stack을 pop한 결과물입력
stack.append(i) #스택에 추가
else:
result += i
while stack: #stack이 빌떄까지
result += stack.pop() #result에 stack을 pop한 결과물 입력
stack = []
for j in result:
if j == '+': #더하기
stack.append(stack.pop()+stack.pop())
else:
stack.append(int(j))
print(f'#{case} {stack[-1]}')
사실 문제자체가 편법을 이용하면 쉽게 풀 수 있는 문제이기는 하나 출제자의 요구사항에 맞춰 풀어보기로 하자. (split('+') 후에 sum이라거나.. 홀수 항들만 리스트에 따로 모아서 sum이라거나..)
느낀점
계산기가 과제로 나오면서 사실 좋았던게 나는 이미 중위 계산법 <> 후위 계산법으로 바꾸는 방법에 대한 정리와 후위 계산법의 stack을 활용한 계산법을 이전 블로그에 포스팅한적이 있다. 그렇기에 정말 쉽게 접근할 수 있었던 문제였다. 확실히 기본 개념에 대해서 익히고 관련된 코드를 먼저 접해보니까 이후 문제 풀이나 과제에서 쉽게 해결 할 수 있다는 장점이 생겨서 블로그 개념 정리에 대한 덕을 많이 보고 있다 😏
반응형
'알고리즘 풀이 > SW Expert Academy' 카테고리의 다른 글
[SWEA] 토너먼트 카드게임 (python) (0) | 2023.02.16 |
---|---|
[SWEA] 배열 최소 합 (python) (0) | 2023.02.16 |
[SWEA 1234] 비밀번호(python) (0) | 2023.02.13 |
[SWEA 2005] 파스칼의 삼각형(python) (0) | 2023.02.13 |
[SWEA 1954] 달팽이 문제 (0) | 2023.02.13 |
댓글