Recent Posts
Recent Comments
Link
- Today
- Yesterday
- Total
메이쁘
(JAVA) 백준 2857번 : FBI (Feat. 정규표현식 정리 표) 본문
https://www.acmicpc.net/problem/2857
2857번: FBI
문제 5명의 요원 중 FBI 요원을 찾는 프로그램을 작성하시오. FBI요원은 요원의 첩보원명에 FBI가 들어있다. 입력 5개 줄에 요원의 첩보원명이 주어진다. 첩보원명은 알파벳 대문자, 숫자 0~9, 대시 (-)로만 이루어져 있으며, 최대 10글자이다. 출력 첫째 줄에 FBI 요원을 출력한다. 이때, 해당하는 요원이 몇 번째 입력인지를 공백으로 구분하여 출력해야 하며, 오름차순으로 출력해야 한다. 만약 FBI 요원이 없다면 "HE GOT AWAY!"를
www.acmicpc.net
엄청 쉬운 문제.
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