๋ฌธ์ ํ์
์ญ ํด๋๋ ํ๊ธฐ๋ฒ์ ๋ฐ๋ฅธ ์ฐ์ฐ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํด์ผํ๋ค.
์ฐ์ฐ์๋ฅผ ๋ง๋๋ฉด ์ด์ ์ ๋ง๋ฌ๋ ์ซ์ 2๊ฐ๋ฅผ ์ฐ์ฐํ๋ ๋ฐฉ์์ด๋ค.
์๋ก, 4 13 5 / +
์ ๊ฒฝ์ฐ
/
์ฐ์ฐ์๋ฅผ ๋ง๋๊ธฐ ์ง์ 13
๊ณผ 5
๊ฐ ์์ผ๋ฏ๋ก
13 / 5
๋ฅผํด์ฃผ๊ณ ๋์จ ๊ฒฐ๊ณผ๋ฅผ ๋ค์ ๋ฃ์ด์ฃผ๋ฉด 4 2 +
๊ฐ ๋๋ค.
๊ทธ๋ฆฌ๊ณ +
์ฐ์ฐ์๋ฅผ ๋ง๋๊ธฐ ์ง์ 4
์ 2
๊ฐ ์์ผ๋ฏ๋ก 4 + 2
๋ฅผ ํ ๊ฐ์ธ 6
์ ๋ฐํํ๋ฉด ๋๋ค.
ํ์ด
1๏ธโฃ ์คํ์ ์ด์ฉํ ํ์ด
๐ก ๋ ์ค๋ฅธ Idea
์ญ ํด๋๋ ํ๊ธฐ๋ฒ์ ์ฐ์ฐ ๋ฐฉ์ ์, ์คํ์ ์ด์ฉํด์ ํ์ด์ผ๊ฒ ๋ค๋ ์๊ฐ์ด ๋ฐ๋ก ๋ค์๋ค.
์ฐ์ฐ์๋ฅผ ๋ง๋๋ฉด, ๊ฐ์ฅ ๊ทผ์ฒ์ ์๋ ์๋ฅผ ๋ค๋ก ๋๊ณ ์ฐ์ฐํ ๋ค์, ๋ค์ ์คํ์ ๋ฃ๋ ๋ฐฉ์์ผ๋ก ์งํํ๋ฉด ๋ ๊ฒ์ด๋ค.
import java.util.*;
class Solution {
Stack<Integer> stack = new Stack<>();
Set<String> set = new HashSet<>(List.of("+", "-", "/", "*"));
public int evalRPN(String[] tokens) {
for (String token : tokens) {
if (set.contains(token)) {
int[] info = getInfo();
if (token.equals("+")) {
stack.push(info[0] + info[1]);
} else if (token.equals("-")) {
stack.push(info[0] - info[1]);
} else if (token.equals("*")) {
stack.push(info[0] * info[1]);
} else if (token.equals("/")) {
stack.push(info[0] / info[1]);
}
} else {
stack.push(Integer.parseInt(token));
}
}
return stack.pop();
}
private int[] getInfo() {
int back = stack.pop();
int front = stack.pop();
return new int[]{front, back};
}
}
๊ฒฐ๊ณผ
๐ ํ๊ณ
์ญ ํด๋๋ ๋ฒ ์ฐ์ฐ์ด ์ด๋ป๊ฒ ์ด๋ฃจ์ด์ง๋์ง ์ ํ์ ํ๋ค๋ฉด, ์คํ์ ์ด์ฉํด์ ์ฝ๊ฒ ํ์ดํ ์ ์๋ ๋ฌธ์ ์๋ค.
๋จ, ์ฝ๋๋ฅผ ์ง๋ฉด์ ์ด๋ป๊ฒ ํ๋ฉด ์ฝ๋์ ์ค๋ณต์ด ์๋, ๊ฐ๋ ์ฑ์ด ์ข๊ฒ ์งค ์ ์๋๊ฐ๋ฅผ ๊ณ ๋ฏผํ๋ค
๋ฐ๋ผ์ getInfo()
๋ฉ์๋์ set
์ ์ด์ฉํ ์ฐ์ฐ์ ๊ตฌ๋ถ ์กฐ๊ฑด๋ฌธ์ ๋ง๋ค๊ฒ๋์๋ค.