Notice
Recent Posts
Recent Comments
Link
투케이2K
236. (java/자바) 알고리즘 : 스킬트리 - replaceAll 정규식 , 특정 문자 패턴 출력 본문
[개발 환경 설정]
개발 툴 : Eclipse
개발 언어 : Java
[소스 코드]
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;
}
}// 클래스 종료
[결과 출력]
[요약 설명]
/**
* [스킬트리]
* 1. 선행 스킬 순서가 스파크 → 라이트닝 볼트 → 썬더일때, 썬더를 배우려면 먼저 라이트닝 볼트를 배워야합니다
* 2. 순서에 없는 다른 스킬(힐링 등)은 순서에 상관없이 배울 수 있습니다
* 3. 입출력 예시 :
* - skill = "CBD" / skill_trees = ["BACDE", "CBADF", "AECB", "BDA"] / return = 2
* 4. 프로그래머스 사이트 : https://programmers.co.kr/learn/courses/30/lessons/49993
* */
반응형
'Java' 카테고리의 다른 글
238. (java/자바) 퍼센트 percent 값 구하기 실시 및 소수점 자리 수 포맷 실시 (1) | 2021.10.02 |
---|---|
237. (java/자바) list to hashset 변환 및 데이터 중복 제거 실시 (0) | 2021.09.08 |
235. (java/자바) 알고리즘 : 예산 - for 문 , Arrays sort 배열 정렬 (0) | 2021.08.21 |
234. (java/자바) 퍼센트 (percent) 값 계산 수행 실시 - String.format 소수점 제한 출력 (0) | 2021.08.20 |
233. (java/자바) 알고리즘 : 124 나라의 숫자 - 진법 , 규칙 값 치환 실시 (0) | 2021.08.11 |
Comments