Notice
Recent Posts
Recent Comments
Link
투케이2K
31. (TWOK/ALGORITHM) [Java] 스킬트리 - replaceAll 정규식 , 특정 문자 패턴 출력 본문
[환경 설정 및 설명]
언 어 : Java
설 명 : 스킬트리 - replaceAll 정규식 , 특정 문자 패턴 출력
[소스 코드]
package ex6;
import java.util.ArrayList;
import java.util.Arrays;
public class MainActivity13 {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("[Program Start]");
System.out.println("");
/**
* [스킬트리]
* 1. 선행 스킬 순서가 스파크 → 라이트닝 볼트 → 썬더일때, 썬더를 배우려면 먼저 라이트닝 볼트를 배워야합니다
* 2. 순서에 없는 다른 스킬(힐링 등)은 순서에 상관없이 배울 수 있습니다
* 3. 입출력 예시 :
* - skill = "CBD" / skill_trees = ["BACDE", "CBADF", "AECB", "BDA"] / return = 2
* 4. 프로그래머스 사이트 : https://programmers.co.kr/learn/courses/30/lessons/49993
* */
// 초기 변수 선언 실시
String data = "CBD";
String arr[] = {"BACDE", "CBADF", "AECB", "BDA"};
// 결과 출력 메소드 호출 실시
System.out.println("결과 : " + solution(data, arr));
}// 메인 종료
public static int solution(String skill, String[] skill_trees) {
// 결과 반환 변수 선언
int result = 0;
// 인풋으로 들어온 데이터 확인 실시
System.out.println("skill : " + skill);
System.out.println("skill_trees : " + Arrays.toString(skill_trees));
System.out.println("");
// 로직 처리 실시
/**
* [세부 설명]
* 1. 필수 스킬트리로 찍을 수 있는 경우의 수 출력 실시
* 2. 정규식 패턴을 사용해서 사용자들이 찍은 스킬트리에서 특정 문자만 출력하도록 실시
* 3. 스킬트리 배열에서 필수 스킬트리 경우의 수를 만족하는 것을 확인 실시
* */
// skill - 필수로 찍어야할 스킬 트리 경우의 수 확인 실시
String case_data = "";
ArrayList case_list = new ArrayList<>(); // 경우의 수를 담기 위한 배열
for (int i=0; i<skill.length(); i++) {
case_data += skill.charAt(i); // C / CB / CBD 순으로 경우의 수를 구합니다
case_list.add(case_data);
}
System.out.println("경우의 수 : " + case_list.toString());
System.out.println("");
// 정규화 방법을 사용해서 특정 문자만 허용 실시
for(int j=0; j<skill_trees.length; j++) {
String regex = skill_trees[j].replaceAll("[^CBD]", ""); // 특정 문자열만 출력
//String regex = skill_trees[j].replaceAll("[CBD]", ""); // 특정 문자열만 제거
System.out.println("원 본 : " + skill_trees[j]);
System.out.println("정규식 수행 : " + regex);
System.out.println("");
for (int k=case_list.size()-1; k>=0; k--) { // 경우의 수 배열을 돌면서 일치하는 패턴이 있는지 확인
System.out.println();
if(case_list.get(k).toString().equals(regex)) { // 특정 패턴을 포함하지 않는 경우
result ++;
break;
}
}
}
// 결과 반환 실시
return result;
}
}// 클래스 종료
[참고 사이트]
236. (java/자바) 알고리즘 : 스킬트리 - replaceAll 정규식 , 특정 문자 패턴 출력
[개발 환경 설정] 개발 툴 : Eclipse 개발 언어 : Java [소스 코드] package ex6; import java.util.ArrayList; import java.util.Arrays; public class MainActivity13 { public static void main(String[..
kkh0977.tistory.com
반응형
'투케이2K 알고리즘' 카테고리의 다른 글
33. (TWOK/ALGORITHM) [Java] 패턴 - 콜백 (callback) 패턴 생성 및 사용 예시 (0) | 2022.07.14 |
---|---|
32. (TWOK/ALGORITHM) [Java] 패턴 - 싱글톤 패턴 생성 및 사용 예시 (0) | 2022.07.14 |
30. (TWOK/ALGORITHM) [Java] 예산 - for 문 , Arrays sort 배열 정렬 (0) | 2022.07.14 |
29. (TWOK/ALGORITHM) [Java] 124 나라의 숫자 - 진법 , 규칙 값 치환 실시 (0) | 2022.07.14 |
28. (TWOK/ALGORITHM) [Java] 짝지어 제거하기 - stack 스택 , while true 무한루프 , for 반복문 , stringbuffer (0) | 2022.07.14 |
Comments