취준생의 코딩테스트 연습기

[SWEA] 4874 [파이썬 S/W 문제해결 기본] 5일차 - Forth 본문

코딩테스트/SWEA

[SWEA] 4874 [파이썬 S/W 문제해결 기본] 5일차 - Forth

Jiwon_C 2021. 4. 21. 23:15

# 문제 링크

swexpertacademy.com/main/learn/course/subjectDetail.do?courseId=AVuPDN86AAXw5UW6&subjectId=AWOVIc7KqfQDFAWg

 

SW Expert Academy

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

swexpertacademy.com

# Soultion

예외처리를 많이 해줘야하는 문제이다. 나도 마지막에 숫자출력을 할 때 예외처리를 해주지 않아서 오류가 생겼다.

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
32
33
= int(input())
for tc in range(1,t+1):
    s = list(map(str,input().split()))
    
    stack = []
    for n in s:
        if n=='.':
            if len(stack)==1:
                print("#"+str(tc),stack.pop())
            else:
                print("#"+str(tc),'error')
        elif n.isdigit():
            stack.append(n)   
        else:
            if len(stack)<2:
                print("#"+str(tc),'error')
                break
            else:
                b = int(stack.pop())
                a = int(stack.pop())
                if str(a).isalpha() or str(b).isalpha():
                    print("#"+str(tc),'error')
                    break
                elif n=='+':
                    stack.append(a+b)
                elif n=='-':
                    stack.append(a-b)
                elif n=='/':
                    stack.append(int(a//b))
                elif n=='*':
                    stack.append(a*b)
           
            
cs

 

7. 마지막 문자(.)를 만나면 출력한다. 이 때, stack에 숫자가 1개만 들어있어야지 출력하고 아니면 error를 출력한다.

12. 확인하는 문자가 숫자이면 stack에 저장한다.

14. 확인하는 문자가 연산자이면 다음을 진행한다.

15. 연산을 하기위해 스택에서 숫자2개를 꺼내하는데, stack에 들어있는 개수가 1개이하이면 error를 출력한다.

21. 숫자두개를 연산해야하는데, 숫자가아닌 연산자가 들어있으면 error를 출력한다.

24~30. 각각에 맞는 연산을 처리한 뒤, stack에 다시 저장한다.

 

Comments