Problem Solving/Baekjoon
[백준] 4659 비밀번호 발음하기 - Implementation / Java
graycode
2024. 6. 29. 14:15
• 문제 링크
https://www.acmicpc.net/problem/4659
• 풀이 코드
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
import java.util.regex.Pattern;
public class Main {
static Pattern ptn = Pattern.compile("[aeiou]");
static Set<Character> set = new HashSet<>(Arrays.asList('a', 'e', 'i', 'o', 'u'));
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringBuilder sb = new StringBuilder();
String s;
while (!(s = br.readLine()).equals("end"))
sb.append("<").append(s).append("> is ").append(isVerified(s) ? "" : "not ").append("acceptable.\n");
bw.write(sb.toString());
bw.flush();
}
private static boolean isVerified(String s) {
if (!ptn.matcher(s).find()) return false;
char a = s.charAt(0), b;
int cnt = 0;
for (int i = 1; i < s.length(); i++, a = b) {
b = s.charAt(i);
if ((set.contains(a) && set.contains(b)) || (!set.contains(a) && !set.contains(b))) cnt++;
else cnt = 0;
if (cnt == 2 || (a == b && a != 'e' && a != 'o')) return false;
}
return true;
}
}