문제 설명
중위 표현식(Infix Notation)은 연산자가 피연산자 사이에 위치하는 표기법으로, 사람이 읽고 쓰기는 편하지만 연산자 우선순위를 괄호로 명시해야 한다는 특징이 있습니다.
후위 표현식(Postfix Notation)은 연산자가 피연산자 뒤에 위치하는 표기법으로, 괄호 없이도 연산 순서를 명확히 지정할 수 있습니다.
연산자 우선순위는 *, / 이 +, - 보다 높으며, 동일 수준의 우선순위 연산에 대해서는 수식의 왼쪽에 위치한 연산자가 더 우선순위가 높습니다.
또한 괄호 (, )는 내부 식을 먼저 계산하도록 하여 연산의 우선순위를 변경합니다.
괄호가 포함된 중위 표현식 expr 이 주어질 때, 동일한 계산 순서를 유지하는 후위 표현식으로 변환하여 반환하는 solution 함수를 작성하시오.
expr는 괄호 문자를 포함하며, 모든 피연산자는 대문자 알파벳 한 글자로만 주어지고, 모든 연산자는 +, -, *, / 중 하나로 모든 괄호는 소괄호((, )) 로만 주어집니다.
제한 사항
expr의 길이는 1 이상 100,000 이하입니다.expr은 항상 유효한 중위 표현식이 입력으로 주어집니다.
예시 테스트케이스 설명
| 테스트케이스 번호 | expr | return |
|---|---|---|
| 1 | "(A+B)*C" | "AB+C*" |
| 2 | "A*(B+C/D)-E" | "ABCD/+*E-" |
| 3 | "A+B*C/(E-F)" | "ABC*EF-/+" |
1번 테스트케이스 설명
"A" + "B"가 괄호로 묶여 있어 먼저 계산됩니다. →AB+- 이후 결과와
"C"를 곱합니다. →AB+C* - 따라서
"AB+C*"가 반환됩니다.
2번 테스트케이스 설명
"C" / "D"가 먼저 계산됩니다. →CD/"B" + "CD/"가 수행됩니다. →BCD/+- 이어서
"A" * "BCD/+"가 계산됩니다. →ABCD/+* - 마지막으로 결과에서
"E"를 뺍니다. →ABCD/+*E- - 따라서
"ABCD/+*E-"가 반환됩니다.
3번 테스트케이스 설명
"B" * "C"가 우선 계산됩니다. →BC*"E" - "F"가 계산됩니다. →EF-"BC*"를"EF-"로 나눕니다. →BC*EF-/- 마지막으로
"A" + "BC*EF-/"가 수행됩니다. →ABC*EF-/+ - 따라서
"ABC*EF-/+"가 반환됩니다.