[μ€ν] 4. νμμ κ³μ°
μ€λͺ
νμμ°μ°μμ΄ μ£Όμ΄μ§λ©΄ μ°μ°ν κ²°κ³Όλ₯Ό μΆλ ₯νλ νλ‘κ·Έλ¨μ μμ±νμΈμ.
λ§μ½ 3*(5+2)-9 μ νμμ°μ°μμΌλ‘ νννλ©΄ 352+*9- λ‘ ννλλ©° κ·Έ κ²°κ³Όλ 12μ λλ€.
μ λ ₯
첫 μ€μ νμμ°μ°μμ΄ μ£Όμ΄μ§λλ€. μ°μ°μμ κΈΈμ΄λ 50μ λμ§ μμ΅λλ€.
μμ 1~9μ μ«μμ +, -, *, / μ°μ°μλ‘λ§ μ΄λ£¨μ΄μ§λ€.
μΆλ ₯
μ°μ°ν κ²°κ³Όλ₯Ό μΆλ ₯ν©λλ€.
μμ μ λ ₯ 1
352+*9-
μμ μΆλ ₯ 1
12
<<νμ΄>>
import java.util.Scanner;
import java.util.Stack;
class Main {
private int solution(String str) {
Stack<Integer> stack = new Stack<>();
for (char x : str.toCharArray()) {
if (Character.isDigit(x)) stack.push(x - 48);
else {
int rt = stack.pop();
int lt = stack.pop();
if (x == '+') stack.push(lt + rt);
else if (x == '-') stack.push(lt - rt);
else if (x == '*') stack.push(lt * rt);
else if (x == '/') stack.push(lt / rt);
}
}
return stack.get(0);
}
public static void main(String[] args) {
Main T = new Main();
Scanner in = new Scanner(System.in);
String str = in.next();
System.out.println(T.solution(str));
}
}
μ΄ λ¬Έμ λ νμμ μ°μ°μ΄λΌκ³ ν΄μ μλ μ€μμ μ°μ°μ΄ λν΄νΈμ΄λ©΄ νμμμ μ°μ°κΈ°νΈλ₯Ό κ³μ°νλ μ«μμ λ§μ§λ§μ λλ€.
νμ΄λ°©μ
μ°μ , toCharArrayλ₯Ό νμ©ν΄μ μ«μμ΄λ©΄ stackμ λ΄μμ€λ€. κ·Έλ¬λ€κ° μ°μ°μλ₯Όλ§λκ² λλ©΄ pushλ₯Ό ν΅ν΄ λ¨Όμ λμ€λ κ°μ μ€λ₯Έμͺ½μ μλ€κ³ ν΄μ rtμ λ£μ΄μ£Όκ³ κ·Έ λ€μ κ°μ ltμ λ£μ΄μ€λ€. κ·Έλ κ² ν΄μ if λ¬ΈμΌλ‘ κ·Έ μ°μ°μμ 쑰건μ λ§κ² ꡬνκ³ λ€μ stackμ λ£μ΄μ€λ€.
μ΄λ°μμΌλ‘ λ°λ³΅ν΄μ λ¬Έμ λ₯Ό νΈλ λ¬Έμ μ΄λ€. !!
μ¬κΈ°μ popμ λ λ² ν΄λ²λ¦¬λ©΄ μ λμ§ μλ!? stack μ κ°μ΄ μμΌλ©΄ μ΄λ»κ² ?? λΌκ³ μκ°ν μλ μμ§λ§ μ¬μ€μ μ°μ°νκΈ° μν΄μλ 무쑰건 λ κ°μ νΌμ°μ°μκ° λ€μ΄κ°κΈ° λ§λ ¨μ΄λ€. κ·Έλ κ² μκ°νλ©΄ λ£μ΄μ€ λ¬Έμμ΄μ΄ μ€μμμ νμμμΌλ‘ λ§λ€μκΈ°μ, μ΄λ¬ν νμ΄λ λ¬Έμ κ° μλ€λ κ²μ΄λ€.
μ²μ 보λ ννμκ³ μ΄λ¬ν λ°©μμ΄ λμ€λ©΄ μ΄ λ Όλ¦¬μ νλ¦μ κΉλ¨Ήμ§ λ§κ³ μ¬μ©νμ!!
<<μΆκ° 곡λΆ>>
'0' '1' κ°μ charλ μμ€ν€μ½λλ‘ νμ λ '0'->48 μ΄κ³ '1' -> 49 μ΄λ€. λ°λΌμ μ΄λ₯Ό μ§μ§ μ«μλ‘ λ°κΎΈκΈ° μν΄μλ -48 μ νλ©΄ λλ€!