MLDD

닫기 검색결과 전체 보기

    [boj] 1935 후위 표기식2

    Problem Solving 2020. 12. 8. 02:59
    반응형

    www.acmicpc.net/problem/1935

     

    1935번: 후위 표기식2

    첫째 줄에 피연산자의 개수(1 ≤ N ≤ 26) 가 주어진다. 그리고 둘째 줄에는 후위 표기식이 주어진다. (여기서 피연산자는 A~Z의 영대문자이며, A부터 순서대로 N개의 영대문자만이 사용되며, 길이

    www.acmicpc.net

    #include <iostream>
    #include <string>
    #include <queue>
    #include <stack>
    
    using namespace std;
    
    queue<char>		q;
    stack<double>	st;
    int				n;
    string			str;
    double			res;
    double			alpha[100];
    double			val;
    double			b;
    double			a;
    
    int	main()
    {
    	cin >> n;
    	cin >> str;
    	for (int i = 0; i < (int)str.size(); i++)
    		q.push(str[i]);
    	for (int i = 0; i < n; i++)
    	{
    		cin >> val;
    		alpha['A' + i] = val;
    	}
    	for (int i = 0; i < (int)str.size(); i++)
    	{
    		if (q.front() >= 'A' && q.front() <= 'Z')
    			st.push(alpha[q.front()]);
    		else
    		{
    			b = st.top();
    			st.pop();
    			a = st.top();
    			st.pop();
    			if (q.front() == '+')
    				st.push((a + b));
    			else if (q.front() == '-')
    				st.push((a - b));
    			else if (q.front() == '*')
    				st.push((a * b));
    			else
    				st.push((a / b));
    		}
    		q.pop();
    	}
    	cout << fixed;
    	cout.precision(2);
    	cout << st.top() << endl;
    	return (0);
    }

    솔직히 이건 후위표기식 어떻게 하는 거지? 하고 알아보다가 굳이 코드가 아니더라도 솔루션이 다 나와있어서... 
    스택에 넣어둔 두개를 꺼내서 스택에서 나중에 나온 것을 처음에 나온 것으로 연산처리하고 다시 스택에 넣으면 되는... 문제였다.

    그리고 문제를 또 잘못 읽어서 값이 순차적으로  ABC 이런식으로 될 줄 알았더니 CAB BCA 이런식으로도 스트링이 들어올 수 있어서
    뜯어 고쳤고...

    C++은 이번 PS하면서 처음이었기 때문에, 소숫점(precision)을 조정하고 고정하는 걸 따로 찾아서 배웠다.

    반응형

    'Problem Solving' 카테고리의 다른 글

    [boj] 5397 키로거  (0) 2020.12.12
    [boj] 2346 풍선 터뜨리기  (0) 2020.12.11
    [boj] 2164 카드2  (0) 2020.12.07
    [boj] 3986 좋은 단어  (0) 2020.12.07
    [boj] 2840 행운의 바퀴  (0) 2020.12.05
    'Problem Solving' 관련 글 more
    • [boj] 5397 키로거 2020.12.12
    • [boj] 2346 풍선 터뜨리기 2020.12.11
    • [boj] 2164 카드2 2020.12.07
    • [boj] 3986 좋은 단어 2020.12.07
    Posted by MLDD

    최근...

  • 포스트
  • 댓글
  • 더 보기

글 보관함

카테고리

CATEGORY (52)
일상 (3)
code (8)
Problem Solving (34)
Cloud (2)
해외직구 (1)
전자기기 (0)
먹거리 (3)
유용한 팁 (1)
반응형
«   2025/07   »
일 월 화 수 목 금 토
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

카운터

Total
Today
Yesterday
DNS server, DNS service
  • Home
  • Tag
  • Guestbook
MLDD's Blog is powered by daumkakao
Skin info material T Mark 5+ by 뭐하라
favicon

MLDD

내가 담고 싶은 것만 담아보기

  • Home
  • Tag
  • Guestbook

관리자 메뉴

  • 관리자 모드
  • 글쓰기
  • CATEGORY (52)
    • 일상 (3)
    • code (8)
    • Problem Solving (34)
    • Cloud (2)
    • 해외직구 (1)
    • 전자기기 (0)
    • 먹거리 (3)
    • 유용한 팁 (1)

카테고리

PC화면 보기 티스토리 Daum

티스토리툴바