얼렁뚱땅 JAVA 문제풀이
[JAVA] 전위순회로 사칙연산 계산하기
MOSTAR
2023. 3. 2. 16:12
이게 되네 ,,,
import java.util.*;
import java.io.*;
public class 사칙연산 {
static HashMap <Integer,String> content;
static HashMap <Integer,Integer> left;
static HashMap <Integer,Integer> right;
public static int dfs(int num) {
int left_cal;
int right_cal;
if(left.get(num)!=-1) {
left_cal = dfs(left.get(num));
right_cal = dfs(right.get(num));
int tem_answer = 0;
if(content.get(num).equals("+")) {
tem_answer = left_cal + right_cal;
} else if(content.get(num).equals("-")) {
tem_answer = left_cal - right_cal;
} else if(content.get(num).equals("*")) {
tem_answer = left_cal * right_cal;
} else {
tem_answer = (int) (left_cal / right_cal);
}
return tem_answer;
// 숫자면 반드시 뒤에 자식들 없
} else {
return Integer.parseInt(content.get(num));
}
}
public static void main(String[] args) throws IOException{
// TODO Auto-generated method stub
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
for(int t=1;t<=10;t++) {
content = new HashMap <Integer,String>();
left = new HashMap <Integer,Integer>();
right = new HashMap <Integer,Integer>();
int n = Integer.parseInt(br.readLine());
for(int i=0;i<n;i++) {
String [] str = br.readLine().split(" ");
content.put(Integer.parseInt(str[0]), str[1]);
if(str.length>=4) {
left.put(Integer.parseInt(str[0]), Integer.parseInt(str[2]));
right.put(Integer.parseInt(str[0]), Integer.parseInt(str[3]));
} else {
left.put(Integer.parseInt(str[0]), -1);
right.put(Integer.parseInt(str[0]), -1);
}
}
System.out.print("#" + t+" ");
System.out.print(dfs(1));
System.out.println();
}
}
}