2022. 1. 18. 12:24ㆍ알고리즘/백준
문제
창영이는 매일 밤 하루동안 일어난 일을 일기장에 남긴다. 일기장을 쓰면서 영어 공부도 같이 하기 위해서 영어로 일기를 쓴다. 또, 남들이 자신의 일기장을 보는 것을 막기 위해서 모음('a','e','i','o','u')의 다음에 'p'를 하나 쓰고, 그 모음을 하나 더 쓴다.
예를 들어, "kemija" 는 "kepemipijapa"가 되고, "paprika"는 "papapripikapa"가 된다.
창영이가 일기장에 작성한 문장이 하나 주어졌을 때, 원래 문장은 무엇인지 구하는 프로그램을 작성하시오.
입력
첫째 줄에 알파벳 소문자와 공백으로만 이루어진 문장이 하나 주어진다. 모든 단어는 공백 하나로 구분되어져 있다. 문장의 길이는 최대 100이다.
출력
첫째 줄에 창영이가 일기장에 작성한 문장을 원래 문장으로 바꾸어 출력한다.
예제입력1
zepelepenapa papapripikapa
예제출력1
zelena paprika
예제입력2
bapas jepe doposapadnapa opovapa kepemipijapa
예제출력2
bas je dosadna ova kemija
문제풀이
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.io.*;
interface Main{
static void main(String[]a) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String str = "";
str = br.readLine();
String regex = "([aeiou])p[aeiou]";
bw.write(str.replaceAll(regex, "$1"));
bw.flush();
}
}
apa, epe, ipi, opo, upu인 단어가 있으면 모두 한글자만 출력하면 되는 문제입니다.
제가 사용한 정규식은 p 사이에 모음이 있으면 매치되도록 했는데
반례로 api, epa 등 서로 다른 모음이 있는 경우에도 매칭이 되는 정규식이지만 정답 처리가 되는 거 보니 반례가 덜 추가된 거 같습니다.
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.io.*;
interface Main{
static void main(String[]a) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String str = "";
String[] arr = {"a", "e", "i", "o", "u"};
str = br.readLine();
Pattern pattern;
for(int i=0; i<arr.length; i++) {
pattern = getPattern(arr[i]);
Matcher matcher = pattern.matcher(str);
if(matcher.find()) {
str = matcher.replaceAll(arr[i]);
}
}
bw.write(str);
bw.flush();
}
public static Pattern getPattern(String str) {
return Pattern.compile(String.format("(%s)p(%s)", Pattern.quote(str), Pattern.quote(str)));
}
}
그냥 이렇게 바꿔봤습니다.. 다른 방법은 잘 안되네요
출처 : https://www.acmicpc.net/problem/2954
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 4659번 비밀번호 발음하기 Java 문제 풀이 (0) | 2022.01.19 |
---|---|
[백준] 14405번 피카츄 Java 문제 풀이 (0) | 2022.01.18 |
[백준] 3447번 버그왕 Java 문제 풀이 (0) | 2022.01.18 |
[백준] 2929번 머신 코드 Java 문제 풀이 (0) | 2022.01.17 |
[백준] 1264번 모음의 개수 Java 문제 풀이 (0) | 2022.01.17 |