728x90
300x250
https://programmers.co.kr/learn/courses/30/lessons/49993#fnref1
단순 문자열 charAt 함수를 통해서 처리하였다.
class Solution {
public int solution(String skill, String[] skill_trees) {
int answer = 0;
for(int n = 0; n<skill_trees.length;n++) {
String str = skill_trees[n];
boolean flag = false;
int pt = 0; // 현재 순서 포인터
for(int i = 0;i<str.length(); i++) {
// 스킬사전에 있는 스킬인가?
if(skill.contains(String.valueOf(str.charAt(i)))) {
// 순서가 다른가?
if(skill.charAt(pt)!=str.charAt(i)) {
flag = true;
break;
} else {
pt++;
}
}
}
if(!flag)
answer++;
}
return answer;
}
}
다른 사람의 풀이도 보았는데, 개인적으로 대단하다고 생각이 들었던 코드.
어떻게 indexOf 를 생각하고, 정규식 표현을 skill을제외한 문자열을 공백으로 바꿔버리는 로직을 생각할 수 있을까 대단하다!!!
import java.util.*;
class Solution {
public int solution(String skill, String[] skill_trees) {
int answer = 0;
ArrayList<String> skillTrees = new ArrayList<String>(Arrays.asList(skill_trees));
//ArrayList<String> skillTrees = new ArrayList<String>();
Iterator<String> it = skillTrees.iterator();
while (it.hasNext()) {
if (skill.indexOf(it.next().replaceAll("[^" + skill + "]", "")) != 0) {
it.remove();
}
}
answer = skillTrees.size();
return answer;
}
}
728x90
'알고리즘 > 그 외' 카테고리의 다른 글
프로그래머스[Level2] - 주식가격 [Java] (0) | 2020.08.30 |
---|---|
프로그래머스[Level2] - 124나라의 숫자 (0) | 2020.08.28 |
[JAVA] 알고리즘 달팽이 배열 - 직사각형 (0) | 2020.07.23 |
SWEA - 1229. [S/W 문제해결 기본] 8일차 - 암호문2 (0) | 2020.05.15 |
SWEA - 8741. 두문자어 (0) | 2020.05.10 |