문제: programmers.co.kr/learn/courses/30/lessons/49993
코딩테스트 연습 - 스킬트리
programmers.co.kr
문제 유형 : 시뮬레이션, 구현
풀이 방식
처음 문제 풀때 간단하게 생각하여 생각없이 코드를 구현했음을 반성합니다.
1. 리스트 : skill 의 알파벳을 하나씩 다 담아놓는다.
2. 스킬트리에서 skill에 존재하는 알파벳으로만 changedStr을 만든다.
3. changedStr을 인덱스에 맞게 strArr에 넣어준다.
4. strArr[i]가 skill 문자에 포함되어있으면 첫번째부터 스킬이 찍혔나 확인해준다.
소스코드
package Programmers;
import java.util.ArrayList;
import java.util.List;
public class 스킬트리 {
public static void main(String[] args) {
String skill = "CBD";
String[] skill_trees = {"BACDE", "CBADF", "AECB", "BDA"};
System.out.println(solution(skill, skill_trees));
}
public static int solution(String skill, String[] skill_trees) {
int answer = 0;
List<Character> list = new ArrayList<Character>();
// 1. 리스트 : skill 의 알파벳을 하나씩 다 담아놓는다.
for (int i = 0; i < skill.length(); i++) {
list.add(skill.charAt(i));
}
String[] strArr = new String[skill_trees.length];
for (int i = 0; i < skill_trees.length; i++) {
// 2. 스킬트리에서 skill에 존재하는 알파벳으로만 changedStr을 만든다.
String nowStr = skill_trees[i];
String changedStr = "";
for (int j = 0; j < nowStr.length(); j++) {
if(list.contains(nowStr.charAt(j))) changedStr += nowStr.charAt(j);
}
// 3. changedStr을 인덱스에 맞게 strArr에 넣어준다.
strArr[i] = changedStr;
}
// 4. strArr[i]가 skill 문자에 포함되어있으면 첫번째부터 스킬이 찍혔나 확인해준다.
for (int i = 0; i < strArr.length; i++) {
if(skill.contains(strArr[i])) {
int len = strArr[i].length();
boolean flag = true;
for (int j = 0; j < len; j++) {
if(strArr[i].charAt(j)!=skill.charAt(j)) {
flag = false;
break;
}
}
if(flag) answer++;
}
}
return answer;
}
}
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[JAVA]프로그래머스_올바른 괄호 (0) | 2021.07.30 |
---|---|
[JAVA]프로그래머스_짝지어 제거하기 (0) | 2021.07.26 |
[JAVA]프로그래머스_프린터 (0) | 2021.04.06 |
[MySQL]프로그래머스_우유와요거트가 담긴 장바구니 (0) | 2020.08.28 |
[MySQL]프로그래머스_최댓값 구하기 (0) | 2020.08.28 |