그리디 문제였다. 두 문자열의 길이가 다르다면 무조건 0이 답이 되고, 두 문자열의 길이가 같다면, 맨 앞 자릿수부터 서로 다른 숫자가 나올때까지 두 문자열을 순회하면서 8의 갯수를 세주면된다.
import java.io.*;
import java.util.*;
public class Main {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
void solution() throws Exception {
st = new StringTokenizer(br.readLine());
String l = st.nextToken();
String r = st.nextToken();
if (l.length() != r.length()) {
System.out.println(0);
return;
}
int ans = 0;
for (int i = 0; i < r.length(); i++) {
if (l.charAt(i) == '8' && r.charAt(i) == '8')
ans++;
if (l.charAt(i) != r.charAt(i))
break;
}
System.out.println(ans);
}
public static void main(String[] args) throws Exception {
new Main().solution();
}
}
분명 간단한 그리디 문제이였는데 그리디 기준을 찾지 못해 결국 답을 보고 풀이하였다. 그리디 기준을 찾지 못한다면, 결국 여러 경우를 나열해보면서 나온 규칙을 통해 기준을 도출하는 방법밖에 없는 것같다.