본문 바로가기
알고리즘 풀이/SW Expert Academy

[SWEA 1222] 계산기1 (python)

by char_lie 2023. 2. 15.
반응형

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV14mbSaAEwCFAYD 

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

계산기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을 활용한 계산법을 이전 블로그에 포스팅한적이 있다. 그렇기에 정말 쉽게 접근할 수 있었던 문제였다. 확실히 기본 개념에 대해서 익히고 관련된 코드를 먼저 접해보니까 이후 문제 풀이나 과제에서 쉽게 해결 할 수 있다는 장점이 생겨서 블로그 개념 정리에 대한 덕을 많이 보고 있다 😏

반응형

댓글