틀린 풀이
final static String[] arr = { "aespa", "baekjoon", "cau", "debug", "edge", "firefox", "golang", "haegang", "iu",
"java", "kotlin", "lol", "mips", "null", "os", "python", "query", "roka", "solvedac", "tod", "unix",
"virus", "whale", "xcode", "yahoo", "zebra" };
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
String answer = str;
for (int i = 0; i < arr.length; i++) {
if (str.contains(arr[i])) {
str = str.replaceAll(arr[i], "");
char c = (char) (i + 97);
answer = answer.replaceAll(arr[i], c + "");
}
}
if (!str.isEmpty()) {
System.out.println("ERROR!");
} else {
System.out.println("It's HG!");
System.out.println(answer);
}
}
아마도 시간초과 코드이다.
보니까 for문 안에있는 contains함수가 버퍼를 먹는거 같다. 안 그래도 contains 쓰고 싶지 않았는데 CPC 대회 종료 1시간전에 잠에서 깨서 갑자기 부랴부랴 하려니까 도저히 머리가 돌아가지 않았다 너무 숙면했음
대회후에 다른 분들 코드를 좀 보니까 자리수로 substr 코드를 한거를 훔쳐 봤다 cpp 코드였는데 코드 난이도는 그렇게 높지 않았다
while (curr < str.length()) {
int idx = str.charAt(curr) - 97;
int natoLength = nato[idx].length();
if (natoLength > str.length() - curr) {
System.out.println("ERROR!");
System.exit(0);
}
String tmp = str.substring(curr, curr + natoLength);
if (tmp.equals(nato[idx])) {
curr += natoLength;
answer.append((char) (idx + 97) + "");
} else {
System.out.println("ERROR!");
System.exit(0);
}
}