[ 정규식 ] - 2019 카카오 개발자 겨울 인턴쉽 "불량사용자"
앞에서 정규식 형태에대해서 공부하였다.
https://programmerk.tistory.com/26
[ 정규식 ] - 자바 정규식
업무를보다가 정규식을 사용할 일이 많았지만 항상 검색해서 코드만 가져다 쓸 뿐 이렇게 직접 작성은 처음해보는것같다. 개인공부를 하면서 코테 공부도 해보려고 코테에 관련있는 분야부터
programmerk.tistory.com
정규식 공부하고 문제 풀면서 더 공부하려고 찾아보았다.
문제는 프로그래머스에 읽어볼 수 있다.
https://programmers.co.kr/learn/courses/30/lessons/64064?language=java
코딩테스트 연습 - 불량 사용자
개발팀 내에서 이벤트 개발을 담당하고 있는 "무지"는 최근 진행된 카카오이모티콘 이벤트에 비정상적인 방법으로 당첨을 시도한 응모자들을 발견하였습니다. 이런 응모자들을 따로 모아 불량
programmers.co.kr
전체 풀이를 해볼껀 아니고 정규식 부분만 풀어보았다.
처음 풀어보는 부분이라 굉장히 오래 걸렷다.
정규식을 사용한 부분은 banner_id와 user_id를 제공해주는데 banner_id의 특정 형태에 해당하는 user_id를 찾는 것 이다.
그래서 banner_id 형태에 맞게 동적으로 정규식을 만들었고 , 각 정규식에 해당하는 문자들을 배열에 담는 것 까지 진행하였다.
@Test
void kakaoTest() {
//예제 문제 1
String [] user_id = {"frodo", "fradi", "crodo", "abc123", "frodoc"};
String[] banned_id = {"fr*d*", "abc1**"};
//예제 문제 2
//String [] user_id = {"frodo", "fradi", "crodo", "abc123", "frodoc"};
//String[] banned_id = {"*rodo", "*rodo", "******"};
//예제 문제 3
//String[] user_id = {"frodo", "fradi", "crodo", "abc123", "frodoc"};
//String[] banned_id = {"fr*d*", "*rodo", "******", "******"};
ArrayList <ArrayList> arrList = new ArrayList <ArrayList>();
for(String banner : banned_id) {
ArrayList <String> arr = new ArrayList <String>();
String regex="";
char [] charAt = banner.toCharArray();
for(char c : charAt) {
if(Character.toString(c). equals("*")) {
regex+="[a-z0-9]";
} else {
regex+=Character.toString(c);
}
}
System.out.println("정규식 :" + regex);
System.out.println("=====================");
for(String user : user_id) {
if(Pattern.matches(regex, user)){
System.out.println(user);
arr.add(user);
}
}
System.out.println("=====================");
arrList.add(arr);
}
}
문제의 정답은 경의 수 가 몇 개가 될 것인가 인데 아직 못 찾았다
ex) (frodo ,abc123 ) , (fradi,abc123) ==> 2개
이 다른 파트 공부하다가 알게 되면 다시 와서 풀어야지...