반응형
예제 입력 1
A*(B+C)
예제 출력 1
ABC+*
예제 입력 2 (추가)
A+B*C+D*E+G
예제 출력 2
답: ABC*+DE*+G+
오답: ABC*DE*G+++
#include <iostream>
#include <stack>
#include <cstring>
using namespace std;
int cal(char c)
{
if (c == '+' || c == '-')
return 1;
else if (c == '*' || c == '/')
return 2;
else
return 0;
}
int main(void)
{
char str[101];
cin >> str;
int len = strlen(str);
stack <char> st;
for (int i = 0; i < len; i++)
{
if (str[i] >= 'A' && str[i] <= 'Z')
cout << str[i];
else if (str[i] == '(')
st.push(str[i]);
else if (str[i] == ')')
{
while (st.top() != '(')
{
cout << st.top();
st.pop();
}
st.pop();
}
else
{
while (!st.empty() && cal(st.top()) >= cal(str[i]))
{
cout << st.top();
st.pop();
}
st.push(str[i]);
}
}
while (!st.empty())
{
cout << st.top();
st.pop();
}
return 0;
}
반응형
'C언어' 카테고리의 다른 글
백준 10824번 네 수 : stoi 부터 stoull까지 문자열과 숫자 변환 (0) | 2020.08.18 |
---|---|
백준 11655번 Rot 13 getline함수 쓰기 (0) | 2020.08.18 |
백준 10820번 문자열분석 : fgets 함수 ! (2) | 2020.08.18 |
백준 10808/10809번 알파벳 찾기 bucket 이용하기 (0) | 2020.08.18 |
백준 1935번 boj 후위 표기식2 : stack 써서 calculate number! (0) | 2020.08.18 |
백준 17299번 오등큰수 : 배열크기 중요하다..!!! (0) | 2020.08.18 |
백준 17298번 오큰수 / 인덱스와 값의 비교 유의해야 (0) | 2020.08.17 |
백준 10799번 boj 쇠막대기와 레이저 / stack썼다가 더 쉽게 고침 (0) | 2020.08.17 |