Recent Posts
Recent Comments
Link
- Today
- Yesterday
- Total
메이쁘
(JAVA) 백준 2857번 : FBI (Feat. 정규표현식 정리 표) 본문
https://www.acmicpc.net/problem/2857
엄청 쉬운 문제.
String 함수 중 contains를 사용하면 끝이지만
연습 겸 자바 정규표현식을 이용했다.
find를 사용하기 위해서는 Pattern 객체를 생성해서 정규표현식을 compile 한 뒤
Matcher 객체를 생성해서 이전에 생성한 Pattern 객체와 문자열 String을 매치시킨다.
마지막으로 매치시킨 Match 객체를 가지고 원하는 함수를 사용해서 결과를 얻어내면 된다!
Pattern pattern = Pattern.compile(".*FBI.*");
Matcher matcher = pattern.matcher(agents[i]);
if(matcher.find()) {
results.add(i + 1);
}
** 정규표현식 중 어느 문자열에서 'FBI' 란 문자를 포함하는지 찾기 위해서는
"*FBI*" 가 아닌 ".*FBI.*" 을 사용해야 한다.
** 정규표현식 패턴 정리 표
소스 코드
package string;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.StringTokenizer;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
// FBI 문제
// 문자열 정규표현식으로 문자 포함 여부 체크해뵈
public class p2857 {
public static void main(String args[]) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] agents = new String[5];
for(int i = 0; i < 5; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
String fbi = st.nextToken();
agents[i] = fbi;
}
ArrayList<Integer> results = searchFBI(agents);
if(results.isEmpty()) {
System.out.println("HE GOT AWAY!");
}
else {
for(int ele : results) {
System.out.print(ele + " ");
}
}
}
private static ArrayList<Integer> searchFBI(String[] agents) {
ArrayList<Integer> results = new ArrayList<Integer>();
for(int i = 0; i < 5; i++) {
Pattern pattern = Pattern.compile(".*FBI.*");
Matcher matcher = pattern.matcher(agents[i]);
if(matcher.find()) {
results.add(i + 1);
}
}
return results;
}
}
참고
https://cyr9210.github.io/2018/11/14/Java/java12/
'Algorithm > Baekjoon' 카테고리의 다른 글
(JAVA) 백준 10942번 : 팰린드롬? (0) | 2020.03.01 |
---|---|
(JAVA) 백준 9933번 : 민균이의 비밀번호 (0) | 2020.02.29 |
(JAVA) 백준 7562번 : 나이트의 이동 (0) | 2020.02.29 |
(JAVA) 백준 1120번 : 문자열 (0) | 2020.02.23 |
(JAVA) 백준 4485번 : 녹색 옷 입은 애가 젤다지? (0) | 2020.02.23 |
Comments