์ฝ๋
import java.util.ArrayList;
import java.util.List;
class Solution {
public List<Integer> diffWaysToCompute(String expression) {
List<Integer> results = new ArrayList<>();
// ์ฃผ์ด์ง expression์ ์ํํ๋ฉด์ ์ฐ์ฐ์๋ฅผ ์ฐพ์
for (int i = 0; i < expression.length(); i++) {
char c = expression.charAt(i);
// ํ์ฌ ๋ฌธ์๊ฐ ์ฐ์ฐ์๋ผ๋ฉด, ์ข์ฐ๋ก ๋ฌธ์์ด์ ๋ถํ
if (c == '+' || c == '-' || c == '*') {
String leftPart = expression.substring(0, i);
String rightPart = expression.substring(i + 1);
// ๋ถํ ๋ ์ข์ธก, ์ฐ์ธก ๋ถ๋ถ์ ๋ํด ์ฌ๊ท์ ์ผ๋ก ํธ์ถํ์ฌ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ ธ์ด
List<Integer> leftResults = diffWaysToCompute(leftPart);
List<Integer> rightResults = diffWaysToCompute(rightPart);
// ์ข์ธก ๊ฒฐ๊ณผ์ ์ฐ์ธก ๊ฒฐ๊ณผ๋ฅผ ํ์ฌ ์ฐ์ฐ์๋ฅผ ๊ธฐ์ค์ผ๋ก ์กฐํฉ
for (int left : leftResults) {
for (int right : rightResults) {
int currentResult = 0;
if (c == '+') {
currentResult = left + right;
} else if (c == '-') {
currentResult = left - right;
} else if (c == '*') {
currentResult = left * right;
}
results.add(currentResult);
}
}
}
}
// ๋ง์ฝ ์ฐ์ฐ์๊ฐ ์๊ณ ์ซ์๋ง ์๋ ๊ฒฝ์ฐ, ์ง์ ๊ฒฐ๊ณผ์ ์ถ๊ฐ
if (results.isEmpty()) {
results.add(Integer.parseInt(expression));
}
return results;
}
}
Java
๋ณต์ฌ