1. 문제
https://programmers.co.kr/learn/courses/30/lessons/49993?language=java
코딩테스트 연습 - 스킬트리
programmers.co.kr
2. 나의 풀이
class Solution {
public int solution(String skill, String[] skill_trees) {
int answer = 0;
//skill 길이가 1일때 처리
if(skill.length() == 1) {
answer = skill_trees.length;
return answer;
}
//스킬트리 배열을 순회
for(int i = 0; i < skill_trees.length; i = i + 1) {
int imsi = 0;
//System.out.println(skill_trees[i]);
//skill 문자열의 첫 문자열을 제외한 각 문자를 순회
for(int j = 1; j < skill.length(); j = j + 1) {
//skill 문자열의 기준 문자열이 있는지 확인하고 있을 경우 그 전 문자열의 인덱스보다 큰 인덱스를 갖는지 확인
if(skill_trees[i].indexOf(skill.substring(j, j + 1)) != -1 &&
skill_trees[i].indexOf(skill.substring(j, j + 1))
< skill_trees[i].indexOf(skill.substring(j - 1, j))){
break;
}else if(skill_trees[i].indexOf(skill.substring(j, j + 1)) != -1 &&
skill_trees[i].indexOf(skill.substring(j - 1, j)) == -1) {
break;
}
imsi += 1;
if(imsi == skill.length() - 1) {
answer += 1;
}
//System.out.println(answer);
}
}
return answer;
}
}
3. 다른 사람 풀이
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;
}
}
'알고리즘 공부 > 프로그래머스' 카테고리의 다른 글
(Java)프로그래머스 코딩테스트 연습 - 월간 코드 챌린지 시즌1 - 삼각 달팽이 (0) | 2020.10.19 |
---|---|
(Java)프로그래머스 코딩테스트 연습 - 2017 카카오코드 예선 - 카카오프렌즈 컬러링북 (0) | 2020.10.15 |
프로그래머스 코딩테스트 연습 - 스택/큐 - 주식가격 (0) | 2020.10.13 |
프로그래머스 코딩테스트 연습 - 연습문제 - 124 나라의 숫자 (0) | 2020.10.12 |
프로그래머스 코딩테스트 연습 - 2018 KAKAO BLIND RECRUITMENT - [1차] 다트 게임 (0) | 2020.10.11 |