[백준 2954 : JAVA] 창영이의 일기장 / 정규 표현식
문제
풀이
다른 분들은 어떤 식으로 풀었나 검색해보니 정규 표현식으로 푼 풀이는 없길래 도움이 되었으면 하는 마음으로 올려본다..!
찾아야할 패턴은 모음 + 'p' + 모음 이다. 만약 세 문자를 하나로 처리한다면, 대체해야할 모음을 적어줄 수가 없기 때문에 각자 처리한다.
예를 들면, apa -> a 로 바꿔줘야하는데, apa를 하나로 보면 바꿔줘야할 문자를 적어줄 수가 없다. 그래서 한 단어씩 처리한다.
정규 표현식에서 제공하는 기능 중 사용한 기능은 다음과 같다.
- 논-캡쳐링을 의미하는 (?:) <--- ?와 : 사이에 특정 메타 문자를 추가할 수 있다.
- 캡쳐링을 의미하는 () <--- 캡쳐링을 통해 바꿔줘야할 문자를 쉽게 표현할 수 있게 된다. 첫 번째 캡쳐링이면 $1 와 같이 사용한다.
- 집합을 의미하는 []
- 바로 앞 패턴의 갯수를 의미하는 {} <--- 예를 들어, a{1} 이면 'a' 라는 문자가 1번 나온다는 의미이다.
코드
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
str = str.replaceAll("(?:([a|e|i|o|u]{1})(p{1})([a|e|i|o|u{1}]))", "$1");
System.out.println(str);
}
}
'Algorithm > Baekjoon' 카테고리의 다른 글
[백준 3653 : JAVA] 영화 수집 / 세그먼트 트리 (0) | 2021.03.30 |
---|---|
[백준 10090 : JAVA] Counting Inversions / 세그먼트 트리 (0) | 2021.03.25 |
[백준 9202 : JAVA] Boggle / 트라이 + DFS (0) | 2021.03.14 |
[백준 11066 : JAVA] 파일 합치기 / DP + 최적화 (1) | 2021.03.09 |
[백준 14476 : JAVA] 최대공약수 하나 빼기 / 세그먼트 트리 + 유클리드 (0) | 2021.03.06 |
댓글
이 글 공유하기
다른 글
-
[백준 3653 : JAVA] 영화 수집 / 세그먼트 트리
[백준 3653 : JAVA] 영화 수집 / 세그먼트 트리
2021.03.30 -
[백준 10090 : JAVA] Counting Inversions / 세그먼트 트리
[백준 10090 : JAVA] Counting Inversions / 세그먼트 트리
2021.03.25 -
[백준 9202 : JAVA] Boggle / 트라이 + DFS
[백준 9202 : JAVA] Boggle / 트라이 + DFS
2021.03.14 -
[백준 11066 : JAVA] 파일 합치기 / DP + 최적화
[백준 11066 : JAVA] 파일 합치기 / DP + 최적화
2021.03.09