Problem Solving/Baekjoon
[백준] 11605 Magic Trick - Brute Force / Java
graycode
2025. 3. 26. 19:45
• 문제 링크
https://www.acmicpc.net/problem/11605
• 풀이 코드
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;
import java.util.function.Function;
public class Main {
static List<Function<Double, Double>> list = new ArrayList<>();
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int n = Integer.parseInt(br.readLine());
while (n-- > 0) {
StringTokenizer st = new StringTokenizer(br.readLine());
list.add(getFunc(st.nextToken().charAt(0), Integer.parseInt(st.nextToken())));
}
int cnt = 0;
double d = 1;
while (d < 101) if (calc(d++)) cnt++;
bw.write(String.valueOf(cnt));
bw.flush();
}
private static boolean calc(double d) {
for (Function<Double, Double> f : list) if ((d = f.apply(d)) < 0 || d % 1 != 0) return true;
return false;
}
private static Function<Double, Double> getFunc(char c, int i) {
if (c == 'A') return d -> d + i;
else if (c == 'S') return d -> d - i;
else if (c == 'M') return d -> d * i;
else return d -> d / i;
}
}